Комментарии 15
«PS: В блог помогите писать не могу»
Спасибо, мозг взорван.
Спасибо, мозг взорван.
+2
теперь можешь.
+2
Форум дальше по дороге.
-6
Думаю вместо этого действительно бы лучше было накидать примеров, я например тоже на PHP писал, а в ООП по человечески досихпор не разобрался, собственно я поддерживаю автора, хотя и подкинуть ему что-нибудь нужное не могу. Если кто подкинет годной информации буду очень благодарен.
+2
Всему учился только на конкретных примерах, так называемых туториалах, в которых дается пример:
1. сначала читаю документацию,
2. потом приступаю делать конкретный пример.
3. вот на основе этого примера и становятся понятны почти все вещи
4. ну а остальное уже подгоняется со временем.
РНР, Фотошоп, ООП, СакеРНР и мн. другое осознал таким вот путем. ДЕЛАЯ что-то.
1. сначала читаю документацию,
2. потом приступаю делать конкретный пример.
3. вот на основе этого примера и становятся понятны почти все вещи
4. ну а остальное уже подгоняется со временем.
РНР, Фотошоп, ООП, СакеРНР и мн. другое осознал таким вот путем. ДЕЛАЯ что-то.
0
если вам хочется приобщиться к ООП, то это необязательно делать на только php (тем более, что ООП в нем не самый сильный)
habrahabr.ru/blogs/i_am_clever/23084/
habrahabr.ru/blogs/i_am_clever/23084/
0
бытовой пример использования ООП:
habrahabr.ru/blogs/php/39739/
habrahabr.ru/blogs/php/39739/
+1
а так все просто. Когда ты переходишь от терминологии «данные» и «функция» к терминологии «некоторая сущность, которая отвечает за..» ты сделаешь 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;
это наследование. ну полиморфизм ты понял из статьи.
короче то что я сказал — это малая часть притом не верная, она нужна только чтоб заинтересовать, чтоб понять как нада нужно читать хорошие книги, список тебе тут накидают в коменты
На примере. Допустим у нас на сайте везде есть доступ к какой-то информации (условно назовем тексты), ты можешь написать функции которые будут работать с этими текстами, а можешь сделать объект, который будет проводить работу с ними, назовем его условно 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;
это наследование. ну полиморфизм ты понял из статьи.
короче то что я сказал — это малая часть притом не верная, она нужна только чтоб заинтересовать, чтоб понять как нада нужно читать хорошие книги, список тебе тут накидают в коменты
+4
спасибо, буду вникать
0
«притом не верная», да, мне такое объяснение не нравится: пример начинается непонятным названием класса ContentManaget; далее ему дается знание о кэше, о чем, по идеи, он не должен знать. С примером наследования все еще хуже. Вы добавили знание в объект о разделении прав в системе + при наследовании изменили интерфейс.
А вот хорошие книги, рекомендую почитать книгу Стива Макконнелла «Совершенный код». Подобные термины ооп там объясняются в первых же главах, некоторые на небольших примерах (в том числе и как не надо делать).
А вот хорошие книги, рекомендую почитать книгу Стива Макконнелла «Совершенный код». Подобные термины ооп там объясняются в первых же главах, некоторые на небольших примерах (в том числе и как не надо делать).
-1
Может стоит что-либо почитаь из классики ООП, а потом уже браться за ООП в пхп? Того же Буча или Гамму с компанией изучить, если очень уж хочется.
0
Могу посоветовать книгу. Мне в свое время помогло. Питер Ловэйн. ООП в PHP5
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Уроки ООП на PHP