отпечатка массива в имени вызываемой функции

x-yuri

Новичок
Это уже ИМХО крайности... Из разряда, Вам шашечки или ехать (с) ?
я о том и говорю. Есть вариант func( $param1, $param2, $i ), есть - func( $param1, $param2 )->{$i}, а есть промежуточный - func( $param1, $param2 )[$i] (не надо создавать класс), который тоже может пригодится
 

advocat

developer
Автор оригинала: С.
Ну во-первых, следущий код не ахти как отличается от твоего, только без псевдогурманства:
PHP:
$UserList = new UserSearch;
$UserList->setSex('female');
$UserList->setAgeFrom(20);
$UserList->setWithPhotos(true);
$UserList->setLocation('Moscow');
$UserList = $UserList->find();
А во-вторых, думать надо РЕАЛЬНЫМИ примерами, а не абстрактно-красивыми. Ав реальном проекте будет нечто такое:
PHP:
$UserList = new UserSearch;
if (isset($_GET['sex'])) $UserList->setSex($_GET['sex']);
if (isset($_GET['age'])) $UserList->setAgeFrom($_GET['age']);
if (isset($_GET['photos'])) $UserList->setWithPhotos($_GET['photos']);
if (isset($_GET['location'])) $UserList->setLocation($_GET['location']);
$UserList = $UserList->find();
Ну никак это в вашу "вкусную" цепочку не превратить. Я прошу прощения за подрезывание крыльев, но реальность обыденна. Ну сделали РНР5 с его почти настоящим ООП, а после 4 (четырех!) лет его существования, все еще 52% серверов крутятся на РНР4. Потому что настоящий ООП в веб приложениях по большому счету на шиш не нужен. Ну сделали неймспейсы (по просьбам окрыленных товарищей) -- ха-ха (три раза). Будете сдувать с них пыль.
Тут я категорически не согласен
Во первых, уже вижу идеологическую ошибку в строке
PHP:
$UserList = $UserList->find();
Зачем переопределять объект на объект с результатами, если мы делаем некоторый вызов и сохраняем результаты внутри объекта

Насчет реалий, то все проще, например я использую ZF, и пользуюсь Request/Response
И подобный паровозик выглядит как минимум

PHP:
$UserList = Mage::getModel('user/search')
    ->setSex($this->getRequest()->getPost('sex'))
    ->setAgeFrom($this->getRequest()->getPost('age_from'))
    ->setWithPhotos($this->getRequest()->getPost('photo'))
    ->setLocation($this->getRequest()->getPost('location'))
    ->find();
На самом деле, я работаю с OpenSource, по этому если есть желание - велкам, можете поковырять
www.magentocommerce.com

а это касается только бд, или еще чего-то?
Ссылка есть немножко выше, и по сути это касается любых вещей (в первую очередь моделей независимо от того с какими данными они работают) которые наслудуются от "контейнера"
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: advocat
Честно говоря, не совсем понимаю, при чем тут MySQL? Я например не пытаюсь доказать, что подобная функциональность не нужна, я всего лишь говорю, что есть более удобные способы
Ну вот и я говорю --- зачем нам транзакции, когда у нас есть более удобная блокировка на всю таблицу. Зачем нам подзапросы, когда то же самое всего за 15 минут можно написать при помощи JOIN. Просто MySQL в данном случае --- это кагбэ классический пример продукта, разработчики которого достаточно долго гадили таким образом в мозги пользователям.

Не надо лечить меня, что вместо стандартной (для прочих "динамических" языков / прочих СУБД) функциАНАЛьности можно придумать что-то другое, "лучше". Я не хочу учить что-то другое, потому что это знание абсолютно бесполезно вне конь текста конь кретного недоязыка / недоСУБД, это засорение мозгов, "стандартные" же знания я могу применить в другом языке / другой СУБД. Тем более что все эти обходные маневры нужны ровно до того момента, пока отсутствующую функциональность не реализуют.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Sad Spirit
тут разные ситуации
с PHP все проще, его делают люди как хотят и могут - ООП в 4ке было написано "за одну ночь",
а в MySQL ребята ушлые, на пиар идет треть усилий, и концепцию "пипл хавает" ощущаешь все время.

У разработчиков PHP очень много целей, и выбор идет между unicode, namespaces, lambda-functions, и сотней других правильных идей.
Популярность языка говорит, что они в целом правильно расставляют приоритеты.
Они не могут сделать сразу все, у них тоже есть предпочтения убеждения (иногда ложные), инертность мышления и привычки.
И кроме основателей Zend на этом никто особо не зарабатывает, как я понимаю.

Полный бред сравнивать PHP с питоном, кстати. Давайте спросим, почему в PHP нет многопоточности, как в питоне, байткод-компиляции в файлы, или jit-компиляции частей кода в нативный, или ....?

Хотите писать $string.trim().lowercase() ? Напишите класс String, как поступили авторы jQuery и сделали цепочки в javascript для элементов DOM!

Хотите писать foo()['id']? Напишите обертку (один раз), подключайте ее везде и вызывайте foo()->data['id'] - да, не так красиво, но работает ...
Когда-то я на 4ке исключения эмулировал :)
 

x-yuri

Новичок
Хотите писать foo()['id']? Напишите обертку (один раз), подключайте ее везде и вызывайте foo()->data['id'] - да, не так красиво, но работает ...
И чем это лучше чем сделать, чтобы foo() возвращала класс? Одна обертка на все функции? Речь же не о том, что очень хочется такой функциональности. А о том, что такая функциональности могла бы и быть, и ничего плохого в ней нет
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
x-yuri так напиши ее, эту функциональность, и засабмить в dev-list, какие проблемы?
namespace-ы написали, отправили разработчикам, и они появились
 

x-yuri

Новичок
x-yuri так напиши ее, эту функциональность, и засабмить в dev-list, какие проблемы?
namespace-ы написали, отправили разработчикам, и они появились
ладно... для тех, кто не внимательно читал тему... ключевые слова: и ничего плохого в ней нет
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
x-yuri
А кто говорит, что это плохо?
Хорошо или нет - пусть решают священники и каждый для себя.

Говорили, что отсутствие - небольшая проблема, и не всем это нужно, потому что можно сделать иначе.
Следовательно, разработчики, вероятно, не станут прилагать усилия для создания этого синтаксиса.
 
Сверху