функции или ООП PHP?
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
функции или ООП PHP?
вечер добрый
дали задание нарисовать веб-морду на пхп для корпоративных нужд. Одновременно получилось так, что на этом задании я одновременно учусь и php. Сейчас написанное мной представляет собой мешанину из sql запросов и php.
Если процесс обучения идет по нарастающей, то потом это я должен оформить все в виде функций, потом еще изучив, использовать классы (то есть уже ООП). Так это надо делать?
или можно просто ввести функции и остановиться на этом??
дали задание нарисовать веб-морду на пхп для корпоративных нужд. Одновременно получилось так, что на этом задании я одновременно учусь и php. Сейчас написанное мной представляет собой мешанину из sql запросов и php.
Если процесс обучения идет по нарастающей, то потом это я должен оформить все в виде функций, потом еще изучив, использовать классы (то есть уже ООП). Так это надо делать?
или можно просто ввести функции и остановиться на этом??
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: функции или ООП PHP?
как хочешь...
для не изобретения велосипедов есть Yii PHP Framework или Zend Framework или другие
но не помешало бы взять большую систему (Framework) и посмотреть...
для не изобретения велосипедов есть Yii PHP Framework или Zend Framework или другие
но не помешало бы взять большую систему (Framework) и посмотреть...
-
- проходил мимо
Re: функции или ООП PHP?
ну, а есть некоторая граница, когда надо использовать ООП?
- Volodymyr
- лейтенант
- Сообщения: 614
- Зарегистрирован: 2008-06-17 16:04:56
- Откуда: Ukraine, Lviv
- Контактная информация:
Re: функции или ООП PHP?
В больших, масштабируемых проектах ООП очень удобен.
-
- проходил мимо
Re: функции или ООП PHP?
если будут только функции
как сейчас у меня - делается запрос в бд(если надо, то несколько запросов), потом на основании этих данных строится таблица.
Скрипт писал так: надо построить вначале первую таблицу на страничке - пишу sql запрос и строю ее, надо ниже вторую - строю также
если под второй табличкой надо какую-нибудь кнопку, то соответсвенно в коде также после построения второй таблички пишу эту кнопку. То есть как страница идет сверху вниз, то так и примерно и код сверху вниз идет.
Сейчас получается все ,к примеру, sql запросы и построение таблицы в одну функцию, другая таблица - другая функция?
как сейчас у меня - делается запрос в бд(если надо, то несколько запросов), потом на основании этих данных строится таблица.
Скрипт писал так: надо построить вначале первую таблицу на страничке - пишу sql запрос и строю ее, надо ниже вторую - строю также
если под второй табличкой надо какую-нибудь кнопку, то соответсвенно в коде также после построения второй таблички пишу эту кнопку. То есть как страница идет сверху вниз, то так и примерно и код сверху вниз идет.
Сейчас получается все ,к примеру, sql запросы и построение таблицы в одну функцию, другая таблица - другая функция?
- Volodymyr
- лейтенант
- Сообщения: 614
- Зарегистрирован: 2008-06-17 16:04:56
- Откуда: Ukraine, Lviv
- Контактная информация:
Re: функции или ООП PHP?
Тут надо определится или срузу собранные данные выводить в хт или собрать их в переменные, а потом выводить одним куском аля шаблоном.
- ADRE
- майор
- Сообщения: 2645
- Зарегистрирован: 2007-07-26 8:53:49
- Контактная информация:
Re: функции или ООП PHP?
для больших проектов где много разработчиков - вообще рай... это ООП.Volodymyr писал(а):Тут надо определится или срузу собранные данные выводить в хт или собрать их в переменные, а потом выводить одним куском аля шаблоном.
а если только морда и пр. хватит функций...
//del
-
- рядовой
- Сообщения: 20
- Зарегистрирован: 2009-11-19 0:37:43
Re: функции или ООП PHP?
мне вот тоже ооп тяжело дается. пользуюсь классами из dklab или другими, если потребуется, но сейчас мне предстоит разрабатывать один довольно сложный проект с нуля, и я хотел бы понять по какому принципу структурируются подобные вещи. а еще я не понимаю где нужно использовать объекты, а где классы. сколько ни читал про это - ничего не понял. в чужих скриптах вижу только классы. посоветуйте как лучше разобраться или объясните на пальцах 

- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: функции или ООП PHP?
php.net примеров там достаточно + google.comsnark писал(а):мне вот тоже ооп тяжело дается. пользуюсь классами из dklab или другими, если потребуется, но сейчас мне предстоит разрабатывать один довольно сложный проект с нуля, и я хотел бы понять по какому принципу структурируются подобные вещи. а еще я не понимаю где нужно использовать объекты, а где классы. сколько ни читал про это - ничего не понял. в чужих скриптах вижу только классы. посоветуйте как лучше разобраться или объясните на пальцах
ProFTP писал(а): для не изобретения велосипедов есть Yii PHP Framework или Zend Framework или другие
но не помешало бы взять большую систему (Framework) и посмотреть...
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: функции или ООП PHP?
класс имеет статичную память, а объект свою собственную, в этом и различиеsnark писал(а):в чужих скриптах вижу только классы. посоветуйте как лучше разобраться или объясните на пальцах
Код: Выделить всё
// Это класс, который может иметь только статичные
// переменные и функции
class a
{
static $b = null;
public $c = null;
// Эта функция может использоваться как в объекте, так и без него,
// поскольку не использует $this
function set_b($value) {
self::$b = $value; // Установка статичного свойства класса
}
// Это функция может использоваться только в контексте объекта,
// поскольку использует $this
function set_c($value) {
$this->c = $value; // Установка свойства объекта
}
}
// Работа с классом
a::set_b('one');
echo a::$b, PHP_EOL;
// Работа с объектом
$a = new a();
$a->set_b('two'); // Установка статичных свойств класс работает и для объекта
$a->set_c('three'); // Для объекта доступны нестатичные свойства
// Вывод свойства объекта
echo $a->c, PHP_EOL;
// Вывод свойства класса
echo a::$b, PHP_EOL;
Код: Выделить всё
one
three
two
- ADRE
- майор
- Сообщения: 2645
- Зарегистрирован: 2007-07-26 8:53:49
- Контактная информация:
Re: функции или ООП PHP?
вот не могу придумать пример для чего мне может понадобиться класс... 
--
ProFTP
Покажи как правильно юзать классы на перле, а то мне кажется что это те же самый функции просто вызываются по другому...

--
ProFTP
Покажи как правильно юзать классы на перле, а то мне кажется что это те же самый функции просто вызываются по другому...
//del
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: функции или ООП PHP?
классы без создания объектов используют просто, как пространства имён. К примеру, такADRE писал(а):вот не могу придумать пример для чего мне может понадобиться класс...
Код: Выделить всё
class db {
function query($sql. $link = null) {
if ( !($res = mysql_query($sql, $link)) )
throw new Exception('MySQL Error: '. mysql_error());
return $res;
}
}
$res = db::query('SELECT * FROM `table`');
...
- ADRE
- майор
- Сообщения: 2645
- Зарегистрирован: 2007-07-26 8:53:49
- Контактная информация:
Re: функции или ООП PHP?
аа ) в общем разница только в организации работы с памятью... правильно?
//del
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: функции или ООП PHP?
в принципе да, это самое главное. На этом и держится ООП.ADRE писал(а):аа ) в общем разница только в организации работы с памятью... правильно?
-
- проходил мимо
Re: функции или ООП PHP?
когда в пользовательских функциях определяется например переменная $a = 10, а потом говорится global $a, то после этого эта переменная стает доступной для всего сценария? если не писать lobal $a, то эта переменная не будет видна дальше функции?
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: функции или ООП PHP?
нет, наоборот, переменная из глобального адресного пространства будет доступна в текущем пространстве функции.Гость писал(а):а потом говорится global $a, то после этого эта переменная стает доступной для всего сценария?
Код: Выделить всё
// Пространство вне функции/класса считается глобальным
$a = 10;
function echo_a() {
global $a; // Получаем доступ к глобальной переменной
echo ++$a, PHP_EOL; // Увеличиваем занчение переменной и выводим
}
echo_a();
echo_a();
echo $a, PHP_EOL;
// Результат работы
11
12
12
Код: Выделить всё
// Пространство вне функции/класса считается глобальным
$a = 10;
function echo_a() {
echo ++$GLOBALS['a'], PHP_EOL; // Увеличиваем значение глобальной переменной и выводим
}
echo_a();
echo_a();
echo $a, PHP_EOL;
-
- проходил мимо
Re: функции или ООП PHP?
я конечно книги и статьи про это читаю, пока что не до конца догоняю. Вот в чем вопрос: например в первой ф-ии получили каким-либо образом переменную $d. Ее надо использовать во второй ф-ии, пишу f2($d){...}. И чтобы использовать $d во второй ф-ии мне надо в первой написать global $d. Так?
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: функции или ООП PHP?
В пхп есть всего два адресных пространства - глобальное и локальное. Глобальное, это то, которые работеает вне функций; лоакльное только внутри функций/объектов/классов. Иными словами: Получить доступ в пространство функции можно только через аргументы, которые функция принимает на вход. А вот из функции данные могут вернуться в виде результата работы (return), либо функция может забраться в глобальное пространство и там нагадить, или функция может подпортить аргументы, переданные по ссылке.
Простой пример: все три функции выведут одинаковый результат, но все три рабоают по-разному. В данном случае верным решением является только первый вариант.
Чтобы передать результат работы одной функции к другой, нужно этот результат сохранить в переменную и передать её в виде аргумента.
Код: Выделить всё
echo 'Hello, world!'; // Глобальное пространство
function hello()
{
echo 'Hello, world!'; // Адресное пространство функции
}
Простой пример:
Код: Выделить всё
$a = 1;
$b = 3;
// Классический вариант использования функций
function sum1($arg1, $arg2){ // Аргументы передаются на вход
return $arg1 + $arg2; // Результат на выходе
}
// Функция, которая считается себя самой умной
function sum2() {
global $sum, $a, $b; // Лезет в глобальное пространство
$sum = $a + $b; // И сама решает, куда, что пихать
}
// Си-шный вариант функции
function sum3($arg1, $arg2, &$result) { // Третий аргумент передаётся по ссылке, об этом говорит & перед ним
$result = $arg1 + $arg2; // Портим аргументы, переданные по ссылке
}
// Используем функции
// Мы сами решаем, что передать на вход функции и как использовать результат
echo sum1($a, $b), PHP_EOL;
// Мы запускаем функцию в слепую и надеемся, что она что-то сделает
sum2();
echo $sum, PHP_EOL;
// Используем лишнюю переменную, чтобы сохранить результат
sum3($a, $b, $result);
echo $result, PHP_EOL;
Чтобы передать результат работы одной функции к другой, нужно этот результат сохранить в переменную и передать её в виде аргумента.
Код: Выделить всё
$sum = sum1(1, 10);
print_r($sum);
-
- проходил мимо
Re: функции или ООП PHP?
спасибо, исчерпывающий ответ
еще сюда же вопрос, все про функции
если например есть такое:
еще сюда же вопрос, все про функции
если например есть такое:
Код: Выделить всё
ф-ия test() {
global $mass_usluga;
.......
$select = "select * from Usluga where Id != '$x[Usluga]'";
$res = mysql_query($select, $link);
while($row21 = mysql_fetch_assoc($res21)) {
$mass_usluga = $row21;
}
ф-ия test2($mass_usluga) {
....
echo "<td align=center colspan=3><select name=usluga>";
while ($mass_usluga) { //1
echo "<option>$mass_usluga[Name]</option>";
}//1
}
во второй ф-ии должна выводиться формочка выбора. То что написал не работает. Пробовал еще различные варианты. В связи с этим возник вопрос:
возможно как-то передать во вторую ф-ию значения из первой ф-ии, в которой она получает значения в цикле.