Александр Шульман@developer
Развиваю ИТ
Информация
- В рейтинге
- 167-й
- Откуда
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Генеральный директор
Ведущий
От 3 000 000 ₽
Управление проектами
Ведение переговоров
Разработка ТЗ
Agile
Управление разработкой
Оптимизация бизнес-процессов
Организация бизнес-процессов
Построение команды
Стратегическое планирование
Развитие бизнеса
пропущено слово «похоже»
будущее уже здесь! Я б себе с удовольствием взял бы прозрачный такой телефон — красиво!
Q: C++ uses ”::” for namespaces, why did the PHP internals developers feel they needed to solve the ambiguity issues rather than leaving it to each developer to prevent ambiguity between namespace names and other identifiers?
A: Ambiguity is an edge case, meaning that developers wouldn't necessarily be aware of the potential for it through their own past experience, and debugging would be extremely difficult. Further, there was no way to provide a PHP error message on ambiguity without impacting performance in all cases. [Reference needed]
а так самый популярный пример PHP My ADMIN вы же не будете утверждать, что управление БД это чисто сетевая задача? Хотя эти примеры именно работают под интернет серверами.
Есть множественные примеры когда мой знакомый админ писал всякие скрипты настройки / управления / профилактики на PHP потому что как он говорит это понятнее чем ПЕрл
если вы опустились до фраз: «язык — дерьмо», то очевидно что вы просто холиварщик.
Ну вот стоит перед вами выбор писать наподобие:
preg_replace("/(<\/?)(\w+)([^>]*>)/e", "'\\1'.strtoupper('\\2').'\\3'", $html_body);
или использовать preg_replace_callback. так выберите второе — вас потомки добрым словом вспомнят.
таких примеров масса. Следуйте рекомендациям «хорошего» кода и 90% проблем изчезнет.
ну а то что PHP зависим от расширений, так это понятно, но не является минусом потому что в обновления и релизы включаются только стабильные версии, косяки очень редки и оперативно фиксятся
На примере. Допустим у нас на сайте везде есть доступ к какой-то информации (условно назовем тексты), ты можешь написать функции которые будут работать с этими текстами, а можешь сделать объект, который будет проводить работу с ними, назовем его условно 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;
это наследование. ну полиморфизм ты понял из статьи.
короче то что я сказал — это малая часть притом не верная, она нужна только чтоб заинтересовать, чтоб понять как нада нужно читать хорошие книги, список тебе тут накидают в коменты
habrahabr.ru/blogs/php/39739/