Jump to content
  • 0

Разработка приложения на PHP с ООП


Jey Val Star
 Share

Question

Здравствуйте.

Подскажите как лучше (правильней) писать приложение с использованием ООП?

 

Имеется в виду создание объекта и дальнейшее указание методов.

 

пример

<?php    $object = new Contoller();    $object->lang();    $object->view();    // .. //?>

Или все делать в самих методах и переходить из метода в метод

 

Пример

<?phpClass Controller{        function __construct()    {       // какой-то код       $this->lang();    }        function lang()    {       // какой-то код       $this->view();    }    function view()    {       // какой-то код    }    

Заранее спасибо

 

P.S. Прошу не задавать вопросы типа - "Зачем ООП пиши на процедурке?".

 

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

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

Link to comment
Share on other sites

  • 0

Т.е. если я вас правильно понял - то такой способ написания приложения на ООП предпочтительней?

<?php    $object = new Contoller();    $object->lang();    $object->view();    // .. //?>

Чем переход из метода в метод внутри методов?

Link to comment
Share on other sites

  • 0

Как бы вам объяснить.... Например, что делает функция lang? Предположим, что она будет получать и возвращать , допустим массив с текстом на нужном языке
Т.е. мы создали инструмент для получения нужного языка.  

Что делает view? предположим, что функция view() выводит полученый весь сформированный шаблон в браузер.  
Т.е. тем самым мы создали инструмент для отправки шаблона

Ну и зачем нам мешать котлеты с мухами? А если возникнет ситуация, при которой вам нужны будут либо котлеты(язык) , либо мухи(отправка шаблона). Поэтому их нужно разделить

Но не стоит забывать, что и сами инструменты, в прямом и переносном смысле, могут состоять из инструментов, но поменьше)))))

Например, добавите в класс функцию sql() и настроите её для быстрого выполнения и формирования запросов. Таким образом, вы же будете использовать её в любых функциях, при необходимости. именно для этого мы её и делали

 

Link to comment
Share on other sites

  • 0

вот пример (может и не самый хороший, но понятный) того, для чего нужно использовать $this:

class Человек {    private $имя;     public function __construct($имя) {        $this->имя = $имя;    }     public function чихнуть() {        echo '*', $this->имя, " чихнул*\n";    }     public function сказать($что) {        echo $this->имя, ': ', $что, "\n";    }} $иванов  = new Человек("Иванов");$сидоров = new Человек("Сидоров"); $иванов->чихнуть();$сидоров->сказать('Будь здоров!');$иванов->сказать('Спасибо!');

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

далее, $this применяется для того, что бы использовать результат другого объекта в данном.

Link to comment
Share on other sites

  • 0

Дополню rus'а:

 

Автор поста почитайте про области видимости.

 

Вы задаете вопрос изначально не верно. И первый вариант и второй вполне правильное использование ООП в php.

 

Немаловажный момент заключается именно в области видимости.

 

Собственно пример:

<?phpclass myClass {    private $properties = array();    function __construct($color){        $this->setProperty('color',$color);    }    public function getProperty($key){        return $this->properties[$key];    }    private function setProperty($key,$value){        $this->properties[$key] = $value;    }}$my = new myClass('red');echo $my->getProperty('color')."\r\n";// вернет redecho $my->properties['color']."\r\n";// вернет Fatal error ибо свойство приватное$my->setProperty('color','green')."\r\n";// вернет Fatal error ибо метод приватный

Данный пример дает возможность установить значение 'color' только 1 раз во время инициализации. Дальнейшее его изменение извне не предусмотрено.  

 

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

 

 

 

Надеюсь понятно объяснил.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy