chainik
Новичок
От начинающего в php. Есть функция с $this, нужно разделить ее на две.
Сабж. Теперь подробно.
В двух словах: программлю преимущественно на 1С, есть некоторый опыт в дельфи (давно уже), клиппере (уже в прошлом веке)
. На данный момент читаю факи и доки по эхотагу. Но инфы много, а времени мало. Извиняюсь, если где-нибудь что-нибудь напутаю с терминологией, так сказать.
Нужно пару пинков в нужную сторону, дальше само пойдет
.
Имеется функция, которая заполняет базу mysql. Вызывается из html.
Примерно следующего вида (оставил более значимые на мой взгляд места):
Необходимо сделать следующее:
1. Добавить функцию автоматического заполнения таблицы mysql при появлении определенного файла в каталоге на сайте. С этим проблем особых пока не вижу (подготовил ссылку на файл и вызвал кусок этой функции, который как раз и хочу выделить в отдельную функцию update_table($rows)).
2. Оставить головную часть этой функции именно как in_price_add(), которая вызывается из html-я: т.е. проверку на загрузку файла и еще часть строк, после чего вызвать функцию update_table($rows).
3. Выделить остальную часть функции в отдельную функцию update_table($rows), которая должна обрабатывать файл, на который ссылается $rows и заносить данные в таблицу mysql. Предполагается, что данная функция будет вызывать не только первыми двумя, т.е. должна быть универсальной. Может быть ссылки $this можно заменить на что-то иное? Т.е. данная функция должна только брать ссылку на файл (возможно будет второй параметр, который будет указывать какую именно таблицу обновлять, например, остатки или новинки) и больше ни от чего не зависеть.
В итоге должно получиться что-то вроде этого:
Как я понимаю переменная $this ссылается на вызываемый объект. В нынешем варианте - html (или как-то так).
Пока такие вопросы:
1. на что будет ссылаться $this в строке sql_query, если эта строка будет находиться в функции update_table(), вызванной из функции in_price_add(), вызванной со странички?
2. на что будет ссылаться $this в строке sql_query, если эта строка будет находиться в функции update_table(), вызванной из функции auto_price_update(), вызванной по cron-у при появлении нужного файла в нужной папке?
3. как можно изменить строку "$this->sql_query...", чтобы не зависеть от вызываемого объекта?
Если нужно - могу дать дополнительную инфу. Главный вопрос: что нужно?
ЗЫ Ушел читать дальше доки и ковырять то, что уже вроде бы понятно.
Спасибо.
Сабж. Теперь подробно.
В двух словах: программлю преимущественно на 1С, есть некоторый опыт в дельфи (давно уже), клиппере (уже в прошлом веке)
. На данный момент читаю факи и доки по эхотагу. Но инфы много, а времени мало. Извиняюсь, если где-нибудь что-нибудь напутаю с терминологией, так сказать.Нужно пару пинков в нужную сторону, дальше само пойдет
.Имеется функция, которая заполняет базу mysql. Вызывается из html.
Примерно следующего вида (оставил более значимые на мой взгляд места):
PHP:
function in_price_add()
{
if (!is_uploaded_file( $this->prixod_tmp_name ))
{ return(70); }
...
$rows = file ($this->prixod_tmp_name);
$rowsCount = sizeof($rows);
...
for ($i= $end_Head + 1 ; $i<$rowsCount; $i++)
...
$this->sql_query="INSERT INTO `".$this->PREFICS."_vids` ( `uid` , `name` ) VALUES ('".trim($tds[0])."', '".trim($tds[1])."' ) ";
$this->sql_execute();
...
}
1. Добавить функцию автоматического заполнения таблицы mysql при появлении определенного файла в каталоге на сайте. С этим проблем особых пока не вижу (подготовил ссылку на файл и вызвал кусок этой функции, который как раз и хочу выделить в отдельную функцию update_table($rows)).
2. Оставить головную часть этой функции именно как in_price_add(), которая вызывается из html-я: т.е. проверку на загрузку файла и еще часть строк, после чего вызвать функцию update_table($rows).
3. Выделить остальную часть функции в отдельную функцию update_table($rows), которая должна обрабатывать файл, на который ссылается $rows и заносить данные в таблицу mysql. Предполагается, что данная функция будет вызывать не только первыми двумя, т.е. должна быть универсальной. Может быть ссылки $this можно заменить на что-то иное? Т.е. данная функция должна только брать ссылку на файл (возможно будет второй параметр, который будет указывать какую именно таблицу обновлять, например, остатки или новинки) и больше ни от чего не зависеть.
В итоге должно получиться что-то вроде этого:
PHP:
function auto_price_update()
{
...
$rows = file($this->infile);
update_table($rows);
...
}
function in_price_add()
{
if (!is_uploaded_file( $this->prixod_tmp_name ))
{ return(70); }
...
$rows = file ($this->prixod_tmp_name);
update_table($rows);
}
function update_table($rows)
{
$rowsCount = sizeof($rows);
...
for ($i= $end_Head + 1 ; $i<$rowsCount; $i++)
...
$this->sql_query="INSERT INTO `".$this->PREFICS."_vids` ( `uid` , `name` ) VALUES ('".trim($tds[0])."', '".trim($tds[1])."' ) ";
$this->sql_execute();
...
}
Как я понимаю переменная $this ссылается на вызываемый объект. В нынешем варианте - html (или как-то так).
Пока такие вопросы:
1. на что будет ссылаться $this в строке sql_query, если эта строка будет находиться в функции update_table(), вызванной из функции in_price_add(), вызванной со странички?
2. на что будет ссылаться $this в строке sql_query, если эта строка будет находиться в функции update_table(), вызванной из функции auto_price_update(), вызванной по cron-у при появлении нужного файла в нужной папке?
3. как можно изменить строку "$this->sql_query...", чтобы не зависеть от вызываемого объекта?
Если нужно - могу дать дополнительную инфу. Главный вопрос: что нужно?
ЗЫ Ушел читать дальше доки и ковырять то, что уже вроде бы понятно.

Спасибо.
).