Страница 1 из 1
функции или ООП PHP?
Добавлено: 2010-06-27 22:26:38
Гость
вечер добрый
дали задание нарисовать веб-морду на пхп для корпоративных нужд. Одновременно получилось так, что на этом задании я одновременно учусь и php. Сейчас написанное мной представляет собой мешанину из sql запросов и php.
Если процесс обучения идет по нарастающей, то потом это я должен оформить все в виде функций, потом еще изучив, использовать классы (то есть уже ООП). Так это надо делать?
или можно просто ввести функции и остановиться на этом??
Re: функции или ООП PHP?
Добавлено: 2010-06-28 9:40:22
ProFTP
как хочешь...
для не изобретения велосипедов есть
Yii PHP Framework или
Zend Framework или другие
но не помешало бы взять большую систему (Framework) и посмотреть...
Re: функции или ООП PHP?
Добавлено: 2010-06-29 9:09:52
Гость
ну, а есть некоторая граница, когда надо использовать ООП?
Re: функции или ООП PHP?
Добавлено: 2010-06-29 10:35:34
Volodymyr
В больших, масштабируемых проектах ООП очень удобен.
Re: функции или ООП PHP?
Добавлено: 2010-06-29 11:51:39
Гость
если будут только функции
как сейчас у меня - делается запрос в бд(если надо, то несколько запросов), потом на основании этих данных строится таблица.
Скрипт писал так: надо построить вначале первую таблицу на страничке - пишу sql запрос и строю ее, надо ниже вторую - строю также
если под второй табличкой надо какую-нибудь кнопку, то соответсвенно в коде также после построения второй таблички пишу эту кнопку. То есть как страница идет сверху вниз, то так и примерно и код сверху вниз идет.
Сейчас получается все ,к примеру, sql запросы и построение таблицы в одну функцию, другая таблица - другая функция?
Re: функции или ООП PHP?
Добавлено: 2010-06-29 12:02:53
Volodymyr
Тут надо определится или срузу собранные данные выводить в хт или собрать их в переменные, а потом выводить одним куском аля шаблоном.
Re: функции или ООП PHP?
Добавлено: 2010-06-30 16:53:19
ADRE
Volodymyr писал(а):Тут надо определится или срузу собранные данные выводить в хт или собрать их в переменные, а потом выводить одним куском аля шаблоном.
для больших проектов где много разработчиков - вообще рай... это ООП.
а если только морда и пр. хватит функций...
Re: функции или ООП PHP?
Добавлено: 2010-07-02 18:40:57
snark
мне вот тоже ооп тяжело дается. пользуюсь классами из dklab или другими, если потребуется, но сейчас мне предстоит разрабатывать один довольно сложный проект с нуля, и я хотел бы понять по какому принципу структурируются подобные вещи. а еще я не понимаю где нужно использовать объекты, а где классы. сколько ни читал про это - ничего не понял. в чужих скриптах вижу только классы. посоветуйте как лучше разобраться или объясните на пальцах

Re: функции или ООП PHP?
Добавлено: 2010-07-03 7:36:19
ProFTP
snark писал(а):мне вот тоже ооп тяжело дается. пользуюсь классами из dklab или другими, если потребуется, но сейчас мне предстоит разрабатывать один довольно сложный проект с нуля, и я хотел бы понять по какому принципу структурируются подобные вещи. а еще я не понимаю где нужно использовать объекты, а где классы. сколько ни читал про это - ничего не понял. в чужих скриптах вижу только классы. посоветуйте как лучше разобраться или объясните на пальцах

php.net примеров там достаточно + google.com
ProFTP писал(а):
для не изобретения велосипедов есть
Yii PHP Framework или
Zend Framework или другие
но не помешало бы взять большую систему (Framework) и посмотреть...
Re: функции или ООП PHP?
Добавлено: 2010-07-03 11:09:42
zg
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;
результат работы
Re: функции или ООП PHP?
Добавлено: 2010-07-04 17:14:47
ADRE
вот не могу придумать пример для чего мне может понадобиться класс...

--
ProFTP
Покажи как правильно юзать классы на перле, а то мне кажется что это те же самый функции просто вызываются по другому...
Re: функции или ООП PHP?
Добавлено: 2010-07-04 17:54:15
zg
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`');
...
Re: функции или ООП PHP?
Добавлено: 2010-07-04 18:35:52
ADRE
аа ) в общем разница только в организации работы с памятью... правильно?
Re: функции или ООП PHP?
Добавлено: 2010-07-04 19:12:53
zg
ADRE писал(а):аа ) в общем разница только в организации работы с памятью... правильно?
в принципе да, это самое главное. На этом и держится ООП.
Re: функции или ООП PHP?
Добавлено: 2010-07-05 15:23:17
Гость
когда в пользовательских функциях определяется например переменная $a = 10, а потом говорится global $a, то после этого эта переменная стает доступной для всего сценария? если не писать lobal $a, то эта переменная не будет видна дальше функции?
Re: функции или ООП PHP?
Добавлено: 2010-07-05 16:17:49
zg
Гость писал(а):а потом говорится global $a, то после этого эта переменная стает доступной для всего сценария?
нет, наоборот, переменная из глобального адресного пространства будет доступна в текущем пространстве функции.
Код: Выделить всё
// Пространство вне функции/класса считается глобальным
$a = 10;
function echo_a() {
global $a; // Получаем доступ к глобальной переменной
echo ++$a, PHP_EOL; // Увеличиваем занчение переменной и выводим
}
echo_a();
echo_a();
echo $a, PHP_EOL;
// Результат работы
11
12
12
того же эффекта можно добиться и используя массив $GLOBALS, который доступен везде:
Код: Выделить всё
// Пространство вне функции/класса считается глобальным
$a = 10;
function echo_a() {
echo ++$GLOBALS['a'], PHP_EOL; // Увеличиваем значение глобальной переменной и выводим
}
echo_a();
echo_a();
echo $a, PHP_EOL;
Re: функции или ООП PHP?
Добавлено: 2010-07-05 19:27:54
Гость
я конечно книги и статьи про это читаю, пока что не до конца догоняю. Вот в чем вопрос: например в первой ф-ии получили каким-либо образом переменную $d. Ее надо использовать во второй ф-ии, пишу f2($d){...}. И чтобы использовать $d во второй ф-ии мне надо в первой написать global $d. Так?
Re: функции или ООП PHP?
Добавлено: 2010-07-05 21:10:19
zg
В пхп есть всего два адресных пространства - глобальное и локальное. Глобальное, это то, которые работеает вне функций; лоакльное только внутри функций/объектов/классов. Иными словами:
Код: Выделить всё
echo 'Hello, world!'; // Глобальное пространство
function hello()
{
echo 'Hello, world!'; // Адресное пространство функции
}
Получить доступ в пространство функции можно только через аргументы, которые функция принимает на вход. А вот из функции данные могут вернуться в виде результата работы (return), либо функция может забраться в глобальное пространство и там нагадить, или функция может подпортить аргументы, переданные по ссылке.
Простой пример:
Код: Выделить всё
$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;
все три функции выведут одинаковый результат, но все три рабоают по-разному. В данном случае верным решением является только первый вариант.
Чтобы передать результат работы одной функции к другой, нужно этот результат сохранить в переменную и передать её в виде аргумента.
Re: функции или ООП PHP?
Добавлено: 2010-07-07 13:23:58
Гость
спасибо, исчерпывающий ответ
еще сюда же вопрос, все про функции
если например есть такое:
Код: Выделить всё
ф-ия 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
}
во второй ф-ии должна выводиться формочка выбора. То что написал не работает. Пробовал еще различные варианты. В связи с этим возник вопрос:
возможно как-то передать во вторую ф-ию значения из первой ф-ии, в которой она получает значения в цикле.
Re: функции или ООП PHP?
Добавлено: 2010-07-07 14:14:20
Гость
уже не надо, сам справился