Как стать автором
Обновить

Комментарии 15

«PS: В блог помогите писать не могу»

Спасибо, мозг взорван.
теперь можешь.
благодарствую
Форум дальше по дороге.
Думаю вместо этого действительно бы лучше было накидать примеров, я например тоже на PHP писал, а в ООП по человечески досихпор не разобрался, собственно я поддерживаю автора, хотя и подкинуть ему что-нибудь нужное не могу. Если кто подкинет годной информации буду очень благодарен.
Всему учился только на конкретных примерах, так называемых туториалах, в которых дается пример:
1. сначала читаю документацию,
2. потом приступаю делать конкретный пример.
3. вот на основе этого примера и становятся понятны почти все вещи
4. ну а остальное уже подгоняется со временем.

РНР, Фотошоп, ООП, СакеРНР и мн. другое осознал таким вот путем. ДЕЛАЯ что-то.
если вам хочется приобщиться к ООП, то это необязательно делать на только php (тем более, что ООП в нем не самый сильный)
habrahabr.ru/blogs/i_am_clever/23084/
до паттернов я еще, как мне кажется, не дорос.
спасибо. запишу на будушее
Я бы даже сказал, что делать это лучше совсем не на РНР.
Ну и начать все-таки полезней с теории.
а так все просто. Когда ты переходишь от терминологии «данные» и «функция» к терминологии «некоторая сущность, которая отвечает за..» ты сделаешь 1/3 работы.

На примере. Допустим у нас на сайте везде есть доступ к какой-то информации (условно назовем тексты), ты можешь написать функции которые будут работать с этими текстами, а можешь сделать объект, который будет проводить работу с ними, назовем его условно class ContentManaget что это тебе дает?

во первых, ты получаешь что все функции по работе у тебя собраны в одном месте (это инкапсуляция)
class ContentManaget
public function getText($id)
public function getTextList()

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

class ContentManaget
public function getText($id){
return $this->preOut($this->loadText());
}
protected function loadText($id)
protected function preOut($txt)
public function getTextList()

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

но объект — это сущность а не только функции. Тоесть это не только обработка данных, это еще и сами данные. Теперь зная это просто сделать кеширование:

class ContentManaget
protected $cache=array()
public function getText($id){
if (!isset ($this->cache['id']))
$this->cache['id'] = $this->preOut($this->loadText());
return $this->cache['id']
}
protected function loadText($id)
protected function preOut($txt)
public function getTextList()

так ты можешь понять что такое инкапсуляция и зачем нужно ооп и где оно упрощает жизнь на пальцах.

Второе наследование: допустим у тебя есть критерий по которому твоим ContentManaget ром могут пользоваться админы и пользователи, пользователи тока читают, а админы допустим еще и пишут, как сделать эти разграничения? просто.

class EditorContentManaget extends ContentManaget
function add($title, $txt)
function delete($id)
function edit($id)

теперь собственно место выбора того или иного класса при создании экземпляра:

if (isAdmin())
$cm = new EditorContentManaget;
else
$cm = new ContentManaget;

это наследование. ну полиморфизм ты понял из статьи.

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

спасибо, буду вникать
«притом не верная», да, мне такое объяснение не нравится: пример начинается непонятным названием класса ContentManaget; далее ему дается знание о кэше, о чем, по идеи, он не должен знать. С примером наследования все еще хуже. Вы добавили знание в объект о разделении прав в системе + при наследовании изменили интерфейс.

А вот хорошие книги, рекомендую почитать книгу Стива Макконнелла «Совершенный код». Подобные термины ооп там объясняются в первых же главах, некоторые на небольших примерах (в том числе и как не надо делать).
Может стоит что-либо почитаь из классики ООП, а потом уже браться за ООП в пхп? Того же Буча или Гамму с компанией изучить, если очень уж хочется.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории