Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Необходим ли ООП в php? 
:(
    Опции темы
NLspieler
Дата 2.8.2009, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Сколько не бился, так и не смог понять, зачем в php нужен ООП.
Ведь любые задачи можно выполнить без его использования.

Чем объект лучше ассоциативного массива?
Чем метод лучше обычной пользовательской функции?

Слышал такой довод, что так якобы удобнее. 
Чем удобнее, если нужно писать несколько строк лишнего кода, который впринципе ничего не делает?

Для примера приведу реализацию "объекта и метода" без использования классов:
Код


<?

$auto['marka'] = 'Запорожец 2110'; // Марка
$auto['color'] = 'Лунная ночь';    // Цвет
$auto['inhaber'] = 'Вася Пупкин';  // Владелец

function new_inhaber ($auto , $new_inhaber)
{
    $auto['inhaber'] = $new_inhaber ;
    return $auto ;
}

//Пример использования
$auto = new_inhaber ($auto , 'Маша Машкова') ;

//Или можно написать такой метод

function new_color ($objekt , $new_color)
{
    global $$objekt ;
    $$objekt['color'] = $new_color ;
}

//Пример использования
new_color ('auto' , 'Черный') ;

?>


PM MAIL   Вверх
Ипатьев
Дата 2.8.2009, 12:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Я думаю, правильнее было бы ставить вопрос так: "Необходимо ли ООП программисту?"
PM MAIL   Вверх
NLspieler
Дата 2.8.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Цитата(Ипатьев @  2.8.2009,  12:44 Найти цитируемый пост)
Я думаю, правильнее было бы ставить вопрос так: "Необходимо ли ООП программисту?"

Согласен, но так как других языков я не знаю, то 
поставил вопрос конкретно о php
PM MAIL   Вверх
Sentox
Дата 2.8.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Во первых: как мне защитить допустим Машку Машкову от junior programmer и дать открытые функции для управления обьектом и его свойствами?

Во вторых: если есть Запорожцев штук 100 марок к примеру каждому Запорожцу писать свойства и функции работы с этими обьектами 100 раз!Если Вы рефакторили какую то функцию , которая влияет на свойства всех Запорожцев, это надо исправлять во всех 100! марках Запорожцев!

А если Запорожец динамически изменяется и от этого изменяются все Запорожцы ...

Можно много ещё найти плюсов к ООП.

PM MAIL   Вверх
nerezus
Дата 2.8.2009, 13:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Необходим ли ООП в php?
 Совсем нет, для домашней странички можно и без него обойтись. А можно и без PHP даже.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
youri
Дата 2.8.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



ООП можно использовать в языках, где классы и/или объекты отсутствуют. Но зачем их эмулировать в языке, в котором они присутствуют?

Во втором варианте ты засоряешь глобальную область видимости (можешь случайно создать два объекта с одним и тем же именем)
PM   Вверх
NLspieler
Дата 2.8.2009, 14:02 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Цитата

Во первых: как мне защитить допустим Машку Машкову от junior programmer и дать открытые функции для управления обьектом и его свойствами?


Код

<?

$mashka['name'] = 'Машка Машкова' ;
$mashka['zelka'] = TRUE ;

function sex ($objekt)
{
    $objekt['zelka'] = FALSE ;
    return $objekt ;
}

//Как можно при помощи ООП защитить Машку? от "метода":
$mashka = sex ($mashka) ;

?>



Цитата(youri @  2.8.2009,  13:31 Найти цитируемый пост)
Во втором варианте ты засоряешь глобальную область видимости (можешь случайно создать два объекта с одним и тем же именем)

Согласен, ошибся. Такой пример вообще не работает.

PM MAIL   Вверх
Ипатьев
Дата 2.8.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(Sentox @  2.8.2009,  13:14 Найти цитируемый пост)
Во вторых: если есть Запорожцев штук 100 марок

Мне думается, автор имел ввиду, нсколько часто встречаются в типичных для РНР задачах сто марок запорожцев.
PM MAIL   Вверх
Sentox
Дата 2.8.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Цитата(NLspieler @ 2.8.2009,  14:02)
Цитата


Код

<?

$mashka['name'] = 'Машка Машкова' ;
$mashka['zelka'] = TRUE ;

function sex ($objekt)
{
    $objekt['zelka'] = FALSE ;
    return $objekt ;
}

//Как можно при помощи ООП защитить Машку? от "метода":
$mashka = sex ($mashka) ;

?>




Нет как защитить именно эти свойства 

Код

$mashka['name'] = 'Машка Машкова' ;
$mashka['zelka'] = TRUE ;


Они доступны для любого программиста.
Если закрыть их функцией то они же становятся доступными только в области видимости данной функции.
Это сильно ограничивает использование такого метода организации особенно при рефакторинге.

PS: В приведённом примере Вы не защитили свойства обьекта от бесконтрольных изменений. 

Это сообщение отредактировал(а) Sentox - 2.8.2009, 14:22
PM MAIL   Вверх
NLspieler
Дата 2.8.2009, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Цитата(Sentox @  2.8.2009,  14:20 Найти цитируемый пост)
Они доступны для любого программиста.Если закрыть их функцией то они же становятся доступными только в области видимости данной функции.Это сильно ограничивает использование такого метода организации особенно при рефакторинге.PS: В приведённом примере Вы не защитили свойства обьекта от бесконтрольных изменений. 


Кажется я начинаю понимать всю силу и важность ООП.

ООП позволяет защититься от следующих недопустимых в реальном мире операций,
тем самым улчушая процесс моделирования.
Код

<?

$mashka['name'] = 'Машка Машкова' ;
$mashka['zelka'] = TRUE ;

function sex ($objekt)
{
    $objekt['zelka'] = FALSE ;
    return $objekt ;
}

$mashka = sex ($mashka) ;

$mashka['zelka'] = TRUE ; //Машка стала опять целкой, что в реальном мире не возможно

?>


PM MAIL   Вверх
gcc
Дата 2.8.2009, 14:45 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



если я не ошибаюсь, то доспут к методу (класса) в пхп через сишный указатель (тоже самое и у Java)

вот такой код будет быстрее
Код

class c {
        public $n;
        function hw() {
                $this->n++;
        }
        function do_it() {
                $i = 0; $this->n = 0;
                while ($i < 1000000) { $i++; $this->hw(); }
        }
}
$inst = new c();
$inst->do_it();  


чем функциональный на пхп (так как в пхп указателей нету, например: в perl есть (копировать можно))

Это сообщение отредактировал(а) gcc - 2.8.2009, 15:24
PM WWW ICQ Skype GTalk Jabber   Вверх
NLspieler
Дата 2.8.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Давайте вернемся к нашей Машке.
Ради такого случая, решил прочитать и понять, как создаются классы и методы.

Написал класс. 

Код

<?php

class girl 
{
    var $name ;
    var $zelka ;

    function girl($name , $zelka) 
    {
        $this->name = $name;
        $this->zelka = $zelka;
    }
    
    function sex ()
    {
        $this->zelka = FALSE ;
    }
}


$mashka = new girl('Маша Машкова' , TRUE);
$mashka->sex ();

$mashka->zelka = TRUE ; //Следовательно цель не достигнута!

?>

Как защитить свойства Машки от несанкционированного доступа, что бы изменять их можно было только через методы класса?

Это сообщение отредактировал(а) NLspieler - 2.8.2009, 15:01
PM MAIL   Вверх
Sentox
Дата 2.8.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Добавлено @ 15:05
Цитата(NLspieler @ 2.8.2009,  15:01)
Давайте вернемся к нашей Машке.
Ради такого случая, решил прочитать и понять, как создаются классы и методы.

Написал класс. 

Код

<?php

class girl 
{
    var $name ;
    var $zelka ;

    function girl($name , $zelka) 
    {
        $this->name = $name;
        $this->zelka = $zelka;
    }
    
    function sex ()
    {
        $this->zelka = FALSE ;
    }
}


$mashka = new girl('Маша Машкова' , TRUE);
$mashka->sex ();

$mashka->zelka = TRUE ; //Следовательно цель не достигнута!

?>

Как защитить свойства Машки от несанкционированного доступа, что бы изменять их можно было только через методы класса?

Прочитать про PHP5 и кодить в нём.
Существуют области видимости свойств public, protected и private.
В нашем случае private и protected не дадут это сделать.

PS: Вы используете PHP4

Добавлено @ 15:10
Код

<?php
class girl 
{
    private $name ;
    private $zelka ;

    public function __construct($name , $zelka) 
    {
        $this->name = $name;
        $this->zelka = $zelka;
    }
    
    public function sex ()
    {
        $this->zelka = FALSE ;
    }

    public function getName()
    {
         return $this->name;
    }
}

$mashka = new girl('Маша Машкова' , TRUE);
$mashka->sex ();
$mashka->zelka = TRUE ; //Warning!!!! Интерпретатор выведет ошибку 
$mmm = $mashka->getName(); // Но для этого есть сеттеры и геттеры
echo $mmm; // Выведит 'Маша Машкова' 
?>


Это сообщение отредактировал(а) Sentox - 2.8.2009, 15:13
PM MAIL   Вверх
gcc
Дата 2.8.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



вот тут вот кропаль есть, я там спрашивал
PM WWW ICQ Skype GTalk Jabber   Вверх
Kallisto
Дата 2.8.2009, 19:20 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 20.4.2007

Репутация: -3
Всего: -1



Глупая постановка вопроса.

Автор спрашивает зачем нужно в РНР если можно обойтись ас. массивами. Но при этом забывает, что в с++ тоже можно сделать ас.массив.

ТС почитай что такое ООП, зачем оно, где его надо применять, а где нет, возможно вопросы отпадут, потому что есть разные ситуации - разные решения.

PM MAIL   Вверх
s0lman
Дата 2.8.2009, 19:52 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



По-моему, на форуме достаточно дискуссий по целесообразности использования  ООП. Во всяком случае, даже я в теме ничего нового не нашел 


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
nerezus
Дата 2.8.2009, 21:13 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Совет автору: просто не заморачивайся и пиши на пхп.
Потом в определенный момент поймешь, что тупо портишь свое время, хотя мог бы работать эффективнее.
Я примерно так и дошел.

Смотря на старый код понимаю, что то, что делал 2 недели, сейчас могу сделать за день. И не представляю код без ООП.

А начиналось все с J2ME: надо было разработать свои контроллы.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
youri
Дата 3.8.2009, 04:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(NLspieler @  2.8.2009,  14:35 Найти цитируемый пост)
ООП позволяет защититься от следующих недопустимых в реальном мире операций,тем самым улчушая процесс моделирования

вообще-то можно договориться, что никто не изменяет массив напрямую, только через функции

Цитата(NLspieler @  2.8.2009,  15:01 Найти цитируемый пост)
Давайте вернемся к нашей Машке

по-приличнее не придумал примера?
PM   Вверх
fesor
Дата 3.8.2009, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



И как же ты "договоришься" изменять массив через функцию? Намного проще использовать объекты в таких ситуациях, и ненадо извращения придумывать.
PM MAIL WWW   Вверх
youri
Дата 3.8.2009, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(fesor @  3.8.2009,  09:26 Найти цитируемый пост)
И как же ты "договоришься" изменять массив через функцию?

а что, ты никогда не придерживаешься никаких соглашений?

Цитата(fesor @  3.8.2009,  09:26 Найти цитируемый пост)
Намного проще использовать объекты в таких ситуациях, и ненадо извращения придумывать.

ну я раньше и говорил, что не понятно зачем эмулировать классы/объекты в языке, в котором они присутствуют. Это можно рассматривать как вариант для языков без классов/объектов

кроме того, еще с использованием ООП ты разбиваешь свою задачу на небольшие подзадачи и можешь заниматься каждой из них, не думая об остальных деталях системы. Т.е. проще решить несколько небольших задач, чем одну большую. Хотя изначальный вопрос был скорее про необходимость в ООП-синтаксисе
PM   Вверх
fesor
Дата 3.8.2009, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



необходимости в ООП синтаксисе как таковой не вижу. просто может красивее так. Хотя опять же на вкус и цвет...

по поводу разбития на подзадачи - это наверное самое главное) как говрил наш Физик - "Самое сложное в решении задачи это грамотно разбить ее на части. А потом решение этих частей по отдельности даст нам искомый ответ"
PM MAIL WWW   Вверх
NLspieler
Дата 3.8.2009, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Цитата(youri @  3.8.2009,  09:44 Найти цитируемый пост)
 с использованием ООП ты разбиваешь свою задачу на небольшие подзадачи

Этого можно добится используя обыкновенные функции.



Пока что две причины использования ООП в php, которые я понял:

1. Пример с Машкой: невозможномсть изменения свойств в обход методов.
Тем самым достигается дополнительная защита от ошибок.

2. Наследование. Хорошая возможность ООП. 
Но все равно, мне трудно представить себе задачу, требующую реализации этого средства. 



PM MAIL   Вверх
nerezus
Дата 3.8.2009, 12:17 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Но все равно, мне трудно представить себе задачу, требующую реализации этого средства. 
 Сделай сайт на фреймворке. Потом подумай, во сколько раз дольше бы ты его белал без FW.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
youri
Дата 3.8.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(fesor @  3.8.2009,  10:45 Найти цитируемый пост)
по поводу разбития на подзадачи - это наверное самое главное

но вообще-то это не заслуга ООП
Цитата

In our study of program design, we have seen that expert programmers control the complexity of their designs with the same general techniques used by designers of all complex systems. They combine primitive elements to form compound objects, they abstract compound objects to form higher-level building blocks, and they preserve modularity by adopting appropriate large-scale views of system structure.


Цитата(fesor @  3.8.2009,  10:45 Найти цитируемый пост)
необходимости в ООП синтаксисе как таковой не вижу. просто может красивее так

думаю немного читабельнее

Цитата(NLspieler @  3.8.2009,  12:14 Найти цитируемый пост)
Этого можно добится используя обыкновенные функции

вопрос в том, как это сделать используя простые функции. Если у тебя в резальтате будет куча функций и куча глобальных переменных, то ты нифига не разбил задачу на подзадачи, глобальные переменные связывают все эти функции в одну кучу, да и на функции можно по-разному разбить. Если же глобальных переменных минимум и функции разбиты на части (считай классы), за котороыми закреплены определенные четкие обязанности, то это пожалуй хороший вариант. Думаю так. Но как я сказал, это не то чтобы заслуга ООП. ООП же скорее дает свои принципы: инкапсуляция, абстракция, полиморфизм. Твои же причины: они скорее более низкоуровневые (конкретные)

Цитата(NLspieler @  3.8.2009,  12:14 Найти цитируемый пост)
Пример с Машкой: невозможномсть изменения свойств в обход методов.Тем самым достигается дополнительная защита от ошибок

не во всех языках это возможно, не во всех языках есть модификаторы доступа

Цитата(nerezus @  3.8.2009,  12:17 Найти цитируемый пост)
 Сделай сайт на фреймворке. Потом подумай, во сколько раз дольше бы ты его белал без FW

фреймворки для того и создаются, чтобы быстрее решать определенного рода задачи. Но заслуга ли это ООП или чего другого? Ты можешь объяснить, как ООП помогает создать хороший фреймворк?

Это сообщение отредактировал(а) youri - 3.8.2009, 13:41
PM   Вверх
nerezus
Дата 3.8.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Но заслуга ли это ООП или чего другого? Ты можешь объяснить, как ООП помогает создать хороший фреймворк?
 Покажи мне хороший фреймворк без ООП ;)

Впринципе я вижу такое решение, но в функциональном стиле(т.е. тоже не процедурный подход).  И нафиг это не надо, когда есть ООП.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
lukas
Дата 3.8.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



nerezus

щас будут тыкать в исходники друпала...   smile 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
youri
Дата 3.8.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(nerezus @  3.8.2009,  13:52 Найти цитируемый пост)
Покажи мне хороший фреймворк без ООП ;)

у меня с фреймворками немного опыта, потому и спрашиваю. Паттерны ты, кстати, тоже к ООП относишь? Хотелось бы просто конкретных более-менее реальных примеров применения либо принципов ООП, либо паттернов. Или под ООП ты подразумеваешь синтаксис (классы, объекты)?

Добавлено @ 14:01
Цитата(lukas @  3.8.2009,  13:56 Найти цитируемый пост)
щас будут тыкать в исходники друпала...

lukas, я ж не холивар тут устроить хочу. Меня интересует информация от человека, у которого есть опыт использования фреймворков

Это сообщение отредактировал(а) youri - 3.8.2009, 14:01
PM   Вверх
NLspieler
Дата 3.8.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Цитата(youri @  3.8.2009,  13:40 Найти цитируемый пост)
вопрос в том, как это сделать используя простые функции


Ну например в гостевой книге есть такие функции для работы с БД:

  - подключение
  - добавление сообщения
  - редактирование сообщения
  - удаления сообщения
  - узнать количество страниц в гостевой книге

  - отображения определенной страницы ГК

  - добавление ИП в бан-лист
  - удаление ИП из бан-листа
  - проверка на присутствие ИП в бан листе


И зачем здесь использовать классы? Ведь задача и так уже разбита на множество простых ?



PM MAIL   Вверх
nerezus
Дата 3.8.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Паттерны ты, кстати, тоже к ООП относишь?
 Естественно.

Цитата

Или под ООП ты подразумеваешь синтаксис (классы, объекты)?
 Нет. На C тоже можно писать в ООП-стиле, хотя там нет ни классов, ни объектов.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
youri
Дата 3.8.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(nerezus @  3.8.2009,  15:30 Найти цитируемый пост)
Естественно.

не так уж и естественно, но это уже скорее не особо важные нюансы терминологии. Но как насчет конкретных примеров. Покажи человеку, например, как в его задаче поможет применение ООП или паттернов? Потому что это как минимум первый этап, понять что другие люди придумали умную штуку. Второй этап - объяснить кому-нибудь эту штуку
PM   Вверх
IZ@TOP
Дата 3.8.2009, 17:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(youri @  3.8.2009,  16:36 Найти цитируемый пост)
не так уж и естественно

Как может выглядеть в процедурном стиле реализация таких паттернов как "Одиночка" и "Фабрика", например? Т.е. паттерны, это прямое следствие развития ООП, соответственно, что здесь и взаимосвязь прямая.

За темку, кстати, автору домо-аригато - улыбнуло smile 

NLspieler, за сколько ты напишешь, и не просто нага... прости, накодишь, а читаемо напишешь в процедурном стиле гостевую книгу из своего примера? Задача проста, к тому же разбита по частям - это так, однако, закодив ее на фреймворке, ты ощутишь разницу во времени и читаемости/удобства использования кода.

Добавлено @ 17:21
Цитата(youri @  3.8.2009,  16:36 Найти цитируемый пост)
Покажи человеку, например, как в его задаче поможет применение ООП или паттернов?

Не понимаю, зачем показывать? Об этом уже столько всего написано, нарисовано, сделано, что даже слов не надо. ООП - это из тех вещей, что появляются в процессе эволюции. Это как сравнивать телегу и автомобиль: первую используют крестьяне, у которых недостаточно средств для покупки трактора, а вторую люди живущие в больших городах и работающие на хорошо оплачиваемых работах.
Я конечно не хочу сказать, что мы тут все жмущиеся гении, которым жалко поделиться знаниями. Просто я прекрасно понимаю, что лень губительна, а желание, что бы тебе разжевали и положили в ротик - неистребимо. Однако, давайте жить по принципу - ищущий да найдет.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
youri
Дата 3.8.2009, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(IZ@TOP @  3.8.2009,  17:17 Найти цитируемый пост)
Как может выглядеть в процедурном стиле реализация таких паттернов как "Одиночка" и "Фабрика", например?

а можно конкретные примеры использования в веб-программировании на ООП?

Цитата(IZ@TOP @  3.8.2009,  17:17 Найти цитируемый пост)
Т.е. паттерны, это прямое следствие развития ООП, соответственно, что здесь и взаимосвязь прямая.

паттерны не только для ООП существуют

Цитата(IZ@TOP @  3.8.2009,  17:17 Найти цитируемый пост)
Не понимаю, зачем показывать?

ну чтобы стало очевидно, что эту задачу лучше решить с помощью ООП. Но не просто разбить функции по классам, а чтобы было что-то кроме группировки. Т.е. как от процедурного программирования прийти к ООП на данной конкретной задаче, используя принципы ООП и паттерны и так, чтобы увидеть преимущества

Цитата(IZ@TOP @  3.8.2009,  17:17 Найти цитируемый пост)
Об этом уже столько всего написано, нарисовано, сделано, что даже слов не надо

что никто уже и не помнит зачем *JOKINGLY* А если серьезно, то хотелось бы на конкретной задаче увидеть преимущества ООП. "Напишите на фреймворке" не катит, потому что не очевидно, что нельзя написать фреймворк без ООП
PM   Вверх
nerezus
Дата 3.8.2009, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

а можно конкретные примеры использования в веб-программировании на ООП?
 Сделай на django блог(с каментами) и сравни эти ~40 строк кода(+ шаблоны) с тем, что бы ты делал на чистом ЯП.

Это сообщение отредактировал(а) nerezus - 3.8.2009, 19:59


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
solenko
Дата 3.8.2009, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(nerezus @  3.8.2009,  17:08 Найти цитируемый пост)
Сделай на django блог(с каментами) и сравни эти ~40 строк кода(+ шаблоны) с тем, что бы ты делал на чистом ЯП.

А можно я сделаю блог с комментами на друпале не написав ни строки кода и скажу что процедурный стиль круче? )
Цитата(youri @  3.8.2009,  16:52 Найти цитируемый пост)
А если серьезно, то хотелось бы на конкретной задаче увидеть преимущества ООП.

А если серьезно, то на тривиальном примере вы разници не заметите, а готовить пример на n-сот строк вам никто не будет


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
nerezus
Дата 3.8.2009, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

А можно я сделаю блог с комментами на друпале не написав ни строки кода и скажу что процедурный стиль круче? )
 Давай. но при условии, что всю ЛОГИКУ ПРИЛОЖЕНИЯ пишешь с нуля ;)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
NLspieler
Дата 4.8.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Цитата(IZ@TOP @  3.8.2009,  17:17 Найти цитируемый пост)
NLspieler, за сколько ты напишешь, и не просто нага... прости, накодишь, а читаемо напишешь в процедурном стиле гостевую книгу из своего примера?

Написал часов за 10 (знаю что медленно, ведь стаж программирования у меня меньше года)
Насчет нага**л или накодил не знаю. Вроде все работает так как я этого хотел.
Новые "апгрейды" добавлять довольно легко.  
Например, если нужно изменить принцип проверки данных, 
то достаточно отыскать в файле функцию проверки данных и изменить ее.

Цитата(IZ@TOP @  3.8.2009,  17:17 Найти цитируемый пост)
Не понимаю, зачем показывать? Об этом уже столько всего написано, нарисовано, сделано, что даже слов не надо

Везде написано как, но нигде не написано зачем. 

Но тем не менее, кажется я начинаю понимать, зачем нужен ООП. 

Например, при разработке игры, в которой существует множество объектов, между которыми есть сложная связь, ООП безусловно нужен. 

Зачастую же, его применяют там, где он совсем не нужен и только все усложняет

 

PM MAIL   Вверх
nerezus
Дата 4.8.2009, 13:56 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Написал часов за 10 (знаю что медленно, ведь стаж программирования у меня меньше года)
 а я за полчаса сделал. Стаж проф. разработки 12 месяцев.
Админка каментов и постов через скаффолдинг.
2 контроллера, 2 вида, 2 модели. Модель создается ~2 минуты, вид по ~3 минуты некрасивый, контроллеры по 5 минут. Остальное время  на раздумья и питье кофе.
Это не геста, а блог. Геста в 2 раза быстрее.

Вот теперь подумай и сравни затраты.

Цитата

Зачастую же, его применяют там, где он совсем не нужен и только все усложняет
 Это из серии "не разобрался, но осуждаю".


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
IZ@TOP
Дата 5.8.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(youri @  3.8.2009,  18:52 Найти цитируемый пост)
а можно конкретные примеры использования в веб-программировании на ООП?

Пожалуйста, пример: печать фотографий. Мы печатаем фотографии в разных лабораториях, у всех у них разный формат обмена данными и в этом случае очень помогает паттерн "Фабрика", которая занимается производством объектов с нужным интерфейсом определенной фотолаборатории (в этой задаче используется как минимум 2 паттерна).

Цитата(youri @  3.8.2009,  18:52 Найти цитируемый пост)
паттерны не только для ООП существуют

Не буду спорить на счет истории - не знаю и, в общем-то, не сильно интересно.

Цитата(youri @  3.8.2009,  18:52 Найти цитируемый пост)
ну чтобы стало очевидно, что эту задачу лучше решить с помощью ООП. Но не просто разбить функции по классам, а чтобы было что-то кроме группировки. Т.е. как от процедурного программирования прийти к ООП на данной конкретной задаче, используя принципы ООП и паттерны и так, чтобы увидеть преимущества

Пока ребенок сам не встанет на ноги, он не будет знать, что значит - ходить. Впрочем, помочь ему стоит, но объяснять разницу между "ползать" и "ходить" никто объяснять не будет, я думаю.
Еще, если быть до конца откровенным - жалко времени и нет опыта, необходимого для грамотного преподнесения материала.

Цитата(youri @  3.8.2009,  18:52 Найти цитируемый пост)
что никто уже и не помнит зачем *JOKINGLY* А если серьезно, то хотелось бы на конкретной задаче увидеть преимущества ООП. "Напишите на фреймворке" не катит, потому что не очевидно, что нельзя написать фреймворк без ООП 

Я могу задать встречный вопрос: а вы попробуйте, а потом спрашивайте. Знаете, в процессе изучения и грамотного составления вопроса, по большей части, истина всплывает сама по себе.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
morfus
Дата 5.8.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 30.6.2007

Репутация: 1
Всего: 2



Все вы забываете один момент, цель должна оправдывать средства !!!

Если нужна геста (а гесты редко могут похвастаться HighLoad-ом и даже мегабайтными я уж не говорю про гигабайтные БД) то пишется она одной рукой за пол часа, а второй рукой можно вспоминать свою девушку )))

(что удивительно готовых качественных никогда не видел, хотя честно искал, в итоге написал себе сам с базой в файле, с ноября файл БД не привысил и 30кб, модерируется в виндовом блокноте)

Если нужен блог то в 99% достаточно взять тот-же WordPress и не париться, нафига писать с нуля то что написано и написано лучше чем вы напишете за 2-3 минуты за которые скачаете и установите готовый.

Выбор стиля программирования как и выбор фреймворка и даже просто выбор пива (алкогольное или без) которое вы будете пить в процессе работы, зависит от ожидаемого результата, а не от того что "в классическом случае удобнее" потому что не все случаи классические (хотя да, большинство, но всё равно не все)
PM MAIL WWW   Вверх
nerezus
Дата 5.8.2009, 17:24 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



morfus, блог был примером.
Под часть задач нет готовых продуктов. И именно эту часть и заказывают, как правило.

Так что ты не в тему влез.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
IZ@TOP
Дата 5.8.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(morfus @  5.8.2009,  18:10 Найти цитируемый пост)
Выбор стиля программирования как и выбор фреймворка и даже просто выбор пива (алкогольное или без) которое вы будете пить в процессе работы, зависит от ожидаемого результата, а не от того что "в классическом случае удобнее" потому что не все случаи классические (хотя да, большинство, но всё равно не все) 

Да нет вопросов. Если мне надо тулзу написать, которая обойдет хранилище картинок и перегенерит превьюшки, я этот скрипт на PHP никогда в жизни писать не буду, потому, что быстрее и практичнее sh/bash, к примеру. Но, тут скрывается очень большая подоплека: я не буду писать на PHP подобный скрипт, потому, что умею писать на том, который подходит под задачу в конкретном случае гораздо лучше.
А те, кто не умеют - будут писать на PHP. 


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
WIPS
Дата 5.8.2009, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

Репутация: 1
Всего: 8



Странный сабж - "нужен ли ООП в PHP?". Тут был очень прав Маяковский: "Если звезды зажигают - значит - это кому-нибудь нужно...". Ребята из зенда кроплят днем и ночью оттачивая ООП в ZE2- это раз, потом не покладая рук расширяют Zend Framewok - это два. И наконец самое главное -  огромное к-во людей пользуется ООП именно в PHP и именно сейчас.

По моему ответ ясен.

А если кому-то непонятно или не удобно писать с применением ООП - никто ж не заставляет. Придете к этому сами... или не придете. И поймите меня правильно, если не придете, то это не значит - плохо, просто это не для Вас. А если не для Вас то на кой оно Вам надо smile
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
Sentox
Дата 5.8.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Цитата(WIPS @ 5.8.2009,  20:59)
 А если не для Вас то на кой оно Вам надо smile

 smile 
PM MAIL   Вверх
morfus
Дата 6.8.2009, 01:36 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 30.6.2007

Репутация: 1
Всего: 2



Цитата(WIPS @  5.8.2009,  20:59 Найти цитируемый пост)
По моему ответ ясен.

По моему он повторяет мой

Цитата(morfus @  5.8.2009,  17:10 Найти цитируемый пост)
Выбор стиля программирования как и выбор фреймворка и даже просто выбор пива (алкогольное или без) которое вы будете пить в процессе работы, зависит от ожидаемого результата, а не от того что "в классическом случае удобнее" потому что не все случаи классические (хотя да, большинство, но всё равно не все) 


PM MAIL WWW   Вверх
youri
Дата 6.8.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(solenko @  3.8.2009,  22:37 Найти цитируемый пост)
А если серьезно, то на тривиальном примере вы разници не заметите, а готовить пример на n-сот строк вам никто не будет

не обязательно писать код, можно попытаться объяснить на пальцах, а лучше просто сказать: если ты будешь делать то-то и то-то, то тебе понадобиться сделать то-то и то-то, а это удобнее сделать с помощью ООП, потому-то и потому-то

Цитата(IZ@TOP @  3.8.2009,  17:17 Найти цитируемый пост)
Просто я прекрасно понимаю, что лень губительна, а желание, что бы тебе разжевали и положили в ротик - неистребимо. Однако, давайте жить по принципу - ищущий да найдет.

дело не в "положили в ротик", меня интересует скорее, что именно дает ООП (в контексте php). А так, я найду. Просто можно было бы обсудить. Сомневаюсь я, что все осознают, зачем оно нужно

Цитата(IZ@TOP @  5.8.2009,  15:58 Найти цитируемый пост)
Пожалуйста, пример: печать фотографий. Мы печатаем фотографии в разных лабораториях, у всех у них разный формат обмена данными и в этом случае очень помогает паттерн "Фабрика", которая занимается производством объектов с нужным интерфейсом определенной фотолаборатории (в этой задаче используется как минимум 2 паттерна).

могу предложить такой вариант (если состояния у объектов нету): для каждой лаборатории создаем набор функций с соответствующим префиксом и одну функцию, которая возвращает префикс, основываясь на каком-то условии; этот префикс используется для вызова нужных функций. Что-то типа
Код

$pre = lab_prefix();
lab_call( $pre, 'func', 1, true... );

если нужно состояние, то надо сначала вызвать функцию, которая возвращает ассоциативный массив с состоянием
Код

$pre = lab_prefix();
$lab = lab_call( $pre, 'init', 1, true... );
lab_call( $prefix, $lab, ... );

Кстати, интересно, это ООП-подход или процедурный? Если ООП, то как бы тогда это выглядело в процедурном стиле?
p.s. имеет смысл рассматривать более стандартные задачи, чтобы не возникало лишних вопросов типа "а есть состояние у объектов, возвращаемых фабрикой?", "какие объекты используются для работы с лабораторией?" и т.д. ООП ведь имеет смысл использовать и для стандартных задач?

Цитата(IZ@TOP @  5.8.2009,  15:58 Найти цитируемый пост)
Впрочем, помочь ему стоит, но объяснять разницу между "ползать" и "ходить" никто объяснять не будет, я думаю.Еще, если быть до конца откровенным - жалко времени и нет опыта, необходимого для грамотного преподнесения материала.

просто можно понять как чем-то пользоваться и пользоваться. А можно подумать, что эта штука дает, какие есть варианты, сравнить их и сделать выводы. Не знаю, насколько это применимо к фреймворкам, но из количества строк для решения задачи можно сделать вывод только о том, что многое сделано за тебя. То, что все дело в ООП, имхо, не очевидно

Цитата(IZ@TOP @  5.8.2009,  15:58 Найти цитируемый пост)
Я могу задать встречный вопрос: а вы попробуйте, а потом спрашивайте. Знаете, в процессе изучения и грамотного составления вопроса, по большей части, истина всплывает сама по себе.

тоже вариант, конечно. Вспоминается фраза: "Мудрость приходит с возрастом, но бывает так, что возраст приходит один" smile
PM   Вверх
IZ@TOP
Дата 7.8.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(youri @  6.8.2009,  23:34 Найти цитируемый пост)
дело не в "положили в ротик", меня интересует скорее, что именно дает ООП (в контексте php). А так, я найду. Просто можно было бы обсудить. Сомневаюсь я, что все осознают, зачем оно нужно

В общем-то я согласен, что многие осознают необходимость ООП на интуитивном уровне/так удобнее/так пишут профи и т.п.
Потому я и писал, что для грамотного разъяснения подобных вещей необходим соответствующий навык.

Цитата(youri @  6.8.2009,  23:34 Найти цитируемый пост)
могу предложить такой вариант (если состояния у объектов нету): для каждой лаборатории создаем набор функций с соответствующим префиксом и одну функцию, которая возвращает префикс, основываясь на каком-то условии; этот префикс используется для вызова нужных функций. Что-то типа


Если мы будем для каждой лаборатории создавать свой набор функций, мы будем писать код до конца своей жизни. При этом, сделаем все для того, что бы усложнить себе жизнь в случае необходимости изменения внутренних интерфейсов, которые являются оберткой над логикой фотолаборатории.

В данной задаче очень важна прозрачность, что позволит избавить нас от излишней необходимости дублирования кода (как в твоем примере). Достигается это за счет использования фабрики. Так же, наследование позволяет нам реализовать функционал "по умолчанию", который может быть переопределен или использован как есть.

В простейшей реализации мы будем иметь один абстрактный класс предка, который является фабрикантом и имеет возможность выбора лаборатории, добавления объекта фотографии и абстрактный метод отправки заказа, который должен реализовать потомок.

Код

abstract class PhotoLaboratory
{
    public function getLaboratories() { ... }
    public function setLaboratory($laboratory_id) { ... }
    public function addPhoto($photo_id) { ... }
    public static function factory($laboratory_name) { return new $laboratoryName; }
    abstract public function send();
}



Потомок же нашей абстракции, должен будет реализовать всего лишь один метод send, который отправит данные в лабораторию.

Код

class NetprintLaboratory extends PhotoLaboratory
{
    public function send() { ... }
}


Понятное дело, что помимо абстракции лабораторий, у нас есть еще множество классов, который предоставляют функционал для адаптации данных о лабораториях, адресах, расценках, сроках и т.п., которые мы получаем, например, через XMLRPC или SOAP сервисы.

Для того, что бы понять, насколько удобнее работать с ООП, просто представь реализацию подобной системы с использованием процедурного подхода.

В заключение хочется добавить, что мы всю свою жизнь сталкиваемся с объектами. Будь то машина, человек или здание - это все объекты, которые имеют свойства, методы и тому подобное. Потому и ООП подход в программировании видится мне более логичным и естественным.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
youri
Дата 10.8.2009, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(IZ@TOP @  7.8.2009,  14:20 Найти цитируемый пост)
В простейшей реализации

Код

$lab = lab_create( ... ); // создаем нужный product
lab_call( $lab, 'func', ... ); // lab_call проверяет наличие $prefix.'_func' (переопределенная функция)
    // если не существует, то вызывает 'lab_func' (действие по умолчанию)


Цитата(IZ@TOP @  7.8.2009,  14:20 Найти цитируемый пост)
В заключение хочется добавить, что мы всю свою жизнь сталкиваемся с объектами. Будь то машина, человек или здание - это все объекты, которые имеют свойства, методы и тому подобное. Потому и ООП подход в программировании видится мне более логичным и естественным

Степанов об ООП
кроме того, такое впечатление, как будто есть только ООП и все (object happiness - не с самого начала, execution in the kingdom of nouns)
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1204 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.