Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Чем отличаются классы от функций
Покинул форум
Сообщений всего: 224
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
Никогда не использовал классы, всегда обходился только функциями, но так как классы более популярны в программировании хочу понять как правильно их использовать или в каком случае лучше использовать класс, а где лучше обойтись функцией.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Ваш учебник очень старый. Конструкторы носили имена классов в бытие PHP 4.
А вообще могу дать общий совет - если Вы не понимаете в чем преимущество ООП, то лучше его пока не использовать. Со временем, уверен, Вы к этому придете сами.
Покинул форум
Сообщений всего: 1
Дата рег-ции: Февр. 2015
Помог: 0 раз(а)
[/quote]Какое преимущество классов над функцией.[/quote]
Я тоже новичок, и мне потребовалось около суток разобраться в этом. Чтобы ответить тебе по простому мне пришлось самому ответить на этот вопрос.Давай начнем с простого и закончим сложным:
I. в html можно просто вывести 2+2=4
это просто утверждение без вычислений машиной
II. в php это
/*переменная, значение которой ты можешь использовать
внутри какой хочешь функции и также менять значение, перебрасывая из функции в функции, один раз объявив, а обращаться к ней можно $this->result*/
protected$result;
protectedfunction calculator($a,$b,$operation){
switch($operation){
case'+':$this->result=($a+$b);break;
case'-':$this->result=($a-$b);break;
case'*':$this->result=($a*$b);break;
case'/':$this->result=($a/$b);break;
}
}
publicfunction view(){
echo$this->result;
}
}
/* а теперь представь - нам нужно модернизировать эту функцию - нам тогда придется ее
переписывать ручками, вникая как она работает. Используя классы можно дописать к
ней кусок кода. Если тебе понадобятся значения переменных, которые находятся внутри
этой функции, то вытаскивай их от туда. в данном случае я просто добавил еще 1 вариант
операций - степень 'n' - в данном случае рассматривается степень нулевая и первая(для упрощения)*/
class calcmod extends calc{
publicfunction calculator($a,$b,$operation){
parent::calculator($a,$b,$operation);
switch($operation){
case'n':{
if($b==0)$this->result=1;
if($b==1)$this->result=$a;
}break;
}
}
}
$x=2;
$y=3;
$z='+';
$f=new calcmod;
$f->calculator($x,$y,$z);
$f->view();
на экране появится тоже самое что и в первом примере, НО теперь у нас есть возможность создавать любые виды калькулятора, используя
кусок кода и модернизируя его какими хочешь вариантами. Например нам нужен калькулятор простой, инженерный, простой с функцией степени,
простой с функцией вычисления процентов. Во всех них будет одинаковый кусок кода - это операции, вязанные с сложением, умножением, вычитанием и делением. Вот что бы выделить эту общую часть я использую классы.
Пишите...
DelphinPRO
Отправлено: 02 Февраля, 2015 - 00:53:21
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
koras пишет:
хочу понять как правильно
Вот как раз тот случай, когда, на мой взгляд, лучше посмотреть видеоурок. На данном этапе (этапе понимания) практическая реализация в коде не особо важна, а вот "живое" объяснение аспектов ООП гораздо лучше усваивается. Как лекция. Можно даже конспект для себя набросать.
Конкретных видеоуроков, к сожалению, не подскажу. (Добавление)
И, кстати, все эти искусственные примеры на машинках, животных и foo-bar'ах, только засоряют мозг вначале.
==========
Тьфу, блин, некрофилы 4-х летнюю тему подняли...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.