PHPixie Фреймфорк?
PHPixie.com что нибудь хорошее? А то надо как раз что-то полегче для PHP а по бенчмаркам кажется вся норм.
PHPixie.com что нибудь хорошее? А то надо как раз что-то полегче для PHP а по бенчмаркам кажется вся норм.
Вам лучше знать, в Вашем же Гитхабе исходники выложены :)
Кому интересно, сделал колграйнд 6ти фреймворков (включая пиксю конечно), так что можете посмотреть наглядно что происходит внутри фреймворков при их исполнении:
phpixie.com/...ork-comparison
это не серьёзно писать новый фреймворк на PHP 5.2
класс ORM далёк от элегантности
вроде не дурак, и пэхэпэшекчкой грешу давно, но смысл этого от меня неуловимым образом ускользает
$res=new ORMResult(get_class($this), $res=$this->query->limit(1)->execute());
return $res->current();
return $this->limit(1)->find_all()->current();
Так и переписал =)
Напишу здесь чтоб дальше ветку не ззатягивать, а то там уже слишком мало места чтоб писать))
$str="Fairy_Model";
$time=mktime();
for($i=0;$i<10000000;$i++)
preg_replace('#_Model$#i','',$str);
echo(mktime()-$time);
echo "\n";
$time=mktime();
for($i = 0; $i < 10000000; $i++) {
if(strtolower(substr($str,-6))=='_model') substr($str,0,-6);
}
echo(mktime()-$time);
19 секунд прег_реплейсом и 14 субстром
щас поменяю =)
Я читал гитхаб и горько плакал.
Вот из-за таких поделок как это чудо программирования и появляются аргументы в соседней теме про Ruby и php.
Да пожалуйста.
$users = (’first’, ’second’, ’third’);
$second = Misc::arr($numbers, ’fifth’, 100500);
var_dump($second);
int(100500)
вот уж воистинну ARRRRRRR
www.2dayblog.com/...550x-Arrrrr.jpg
Если уж так приспичило:
$a = new ArrayObject(array(1, 2, 3));NULL
метод ->get использует как раз тот АРР
Так а почему лол? преобращает параметры в сам стринг запроса. В этом и вся суть драйвера то.
Рефакторинг, по какой-то причине, обошел Вас стороной, вот потому и лол.
Если вы о том что лучше б разбить на нсколько методов (е.г. один добавляет субстринг с лимитом, другой с оффсетом и тд ) чтоб потом их овеерайдить, то если четсно особого смысла я не ижу, так как если с какйо- то из баз работать не будет то и так надо править прям в драйвере ПДО. Тоесть если будет надобность так сделать то разобю, сейчас нет
Вы за деревьями леса не видите. Смотреть на function query в целом, без слез, просто невозможно. Это моветон :D
Хм ну в принципе я не против ее переписать получше =) только можно поконкретнее о ее проблемах =)?
В принципе если поставить Xcache или скомпилировать пхп в HipHop то будет фактически то же самое.
б) дать девелоперу побольше свободы.
Яркий пример, вот хочу я создать сайт на CakePHP а там с размаху по дефолту готовый лейаут для сайта, куча папок и вьюшек. Конечно круто но если я делаю что-то простенькое на несколько страниц мне-то этого хлама не надо. Приходится все выпиливать.Идея з пиксей та чтоб дать девелопить как хочешь и быть по максимуму KISS
Можно =) Дописываю другое сравнение, скоро закину на сайт. В принципе увидеть их легко. Главное имхо компатибильность з большинством Коханы + наличие собственного ОРМ ( который «верит» девелоперу и не делает Describe запросов в базу и не нуждается в схемах в принципе )
Большинство легких фреймоврков целятся на то чтоб просто сделать рутинг (например как Glue) и оставить девелопера там. Тут же упор сделан на то чтобы сделать имплементации того что часто используется но не слишком много. Тоесть тут есть и рутинг и ОРМ и иерархичная файловая система сделаны так чтоб работать полегче и решать 99% задач, остальной процент задач решает девелопер (если например надо уж очень хитрые связи между ОРМ). Питоновская парадигма: Simple things should be easy, hard htings should be possible
ну хз =) если интересно можете посмотреть туториал например ОРМа phpixie.com/tutorials/orm и весь этот функционал где-то 400 строчек класса ОРМ. Совместимость именно с коханой уже конечно мое предпочтение, разхваливать его трудно))
К Yii у меня реально агрессия ))))) Не люблю когда за меня что-то генерится и т.д. А єто кстати и не сравнения были, только бенчмарк и имхо, а сравнения будут вместе с той статьей про лайтовые фреймворки =) Скину здесь ссылку когда допишу
Тогда не забудьте испытать агрессию к скаффолдингу в целом, и к куче фреймворков во главе с Ruby on Rails в частности )
Ммм если честно то наверно таки испытываю =)
Кстати мне интересно что скажете о Ларавел
))))
Кстати есть несколько MVC фреймворков на чистом C. На одном даже по приколу сайт сделал =) Под конец задумался о том что на struct-ах даже удобнее чам на классах писать ))
loaded() сделано для компатибильности с Kohana в самом деле, в теории контролер взят с нее должен работать более менее и здесь. В принципе надо убрать, за время с коханой вошло в привычку =)
1)
public function loaded() {
return $this->_loaded;
}
Если у вас функция которая возвращает булевое значение поля то начинайте название с приставки is.
Функция с название isLoaded говорит о своём предназначении без комментариев. Ну и в коде
if ($this->isLoaded())
читается лучше чем
if ($this->loaded())
2)
if ($target['type']=='has_many')
И по выносите такие логические строки в константы класса.
Сравнение
if ($target['type'] == self::TAGRET_TYPE)
, где TAGRET_TYPE = ’has_many’ выглядит приятнее. К тому же, если понадобиться изменить тип, то сменить его придется только в одном месте, а не шерстить весь код.
кстати в Yii и евал встречатся =)
Ага, так значит, аффтар — Вы.
насчет PSR-0 то например я всегда считал что глупо писать имя в глубь а не наоборот, так как
Узнайте, кто придумал эти PSR-ы, и почему они так важны именно в случае написания фреймворков.
Query_Mysql_Driver лучше чем Driver_Mysql_Query так как именно первое слово тогда несет больше
Это вообще порочная практика, которую слепо наследуют даже зрелые джеддаи, неговоря уже о падаванах. Давно уже в PHP есть кошерные неймспейсы. Даже великий и страшный Зенд Фреймворк во второй своей версии их использует и отказался от такой нотации.
А вот чем аутолоудер не понравился? я не видел более компактно реализованных каскадных файловых систем.
Use the SPL, Luke: RecursiveIteratorIterator, RecursiveDirectoryIterator, etc
А get_class() на что тогда заменить?
instanceof?
ну не eval() же =) кстати в Yii и евал встречатся =)
www.quotesstar.com/...wer-195651.html — «If eval() is the answer, you’re almost certainly asking the wrong question.» Rasmus Lerdorf
Насчет итератора по директориям то он вообще не нужен, так как наперед известны все места где файл может быть (модули, system и application) нет смысла рекурсию туда вставлять.
Instanceof не поможет здесь preg_replace(’#_Model$#i’, ’’, get_class($this))
Для неймспейсов надо писать use + поддержка только пхп 5.3
PSRы очень субъективные, ну люблю я табы например и что =)
preg_replace(’#_Model$#i’, ’’, get_class($this))
str_replace уже не модно для таких простых замен?
Для неймспейсов надо писать use
Рубисты, питонерасты, перлисты, жабашники и прочие import\require-щики смотрят на вас с улыбкой :)
поддержка только пхп 5.3
Всё, что ниже 5.3, уже не поддерживается, и багов там хватает. К тому же, на хостингах уже даже 5.4 есть, не говорят о 5.3. Странные у вас аргументы.
ну люблю я табы например и что =)
Значит, вы будете гореть в Аду :)
а если создадите Photo_Model_Model ? вот надо вам фотомоделей в базу накидать, все таки иеерархичная файловая система и т.д. и гет_класс всеодно надо будет
=))) ну конечно тоже можно, но так есть еще суппорт для классов которые вообще не заканчиваются на _модел. тоесть класс Users будет смотреть в табличку users =)
Цитата “PHPixie relies heavily on naming conventions to allow all kinds of coding styles for more development freedom”
Ага, и поэтому вы юзаете get_class($this) вместо __CLASS__ - действительно, зачем писать, как принято, будем делать свои свободные велосипеды! :)
Это, кстати, к вашему вопросу «а что не так с get_class()».
__CLASS__ в даном случае вернет просто ORM так как описан как раз в этом классе. Пример тут: www.efrag.gr/?p=272
а откуда такая нелюбовь к get_class() ?
PHP 5.3 only =)
И? LSB доступно с версии >= 5.3. Снова невнимательно читали доку?
а откуда такая нелюбовь к get_class()
У вас же лёгкий фреймворк, так и используйте лёгкие решения: скажем, регулярки с get_class() тяжелее, чем LSB с substr. К тому же, раз у вас всё так объектно-ориентированно, то есть смысл развивать эту парадигму, а не возвращаться в «функциональщину», не так ли?
Опять спасибки =)
Знаете, у меня была и, впринципе, до сих пор есть идея, подкупающая своей новизной. Написать простого бота, гуляющего по интернетам с виртуальной машины под WinXp и IE6, и использующей тонну проксей, для пущей бдительности, что IE6 еще используется хотя бы тем несчастным 0.001% пользователей, дабы вызывать дикий батхерт у фронтедщиков. Продолжайте и Вы в том же духе. Хостерам и сисадминам удобней не трогать софт на серверах.
П.С. меня всеодно будет мучать ностальгия по mysql_query =)
так то? щас побенчмаркаю насколько так быстрее =)
Да ну?А вот чем аутолоудер не понравился? я не видел более компактно реализованных каскадных файловых систем.
../Zend/Controller/Action.php
spl_autoload_register(function($class) {Ну и добавить set_include_path(implode(PATH_SEPARATOR, array(’../vendor’, get_include_path())));
Сделать через сет инклуд пас плохо потому что:
1) есть еще вьюшки, которые тоже в каскадной системе а в инклуд пас добавлять их никак не надо
2) менять девелоперу настроойки пхп в рантайме как-раз то чего я хотел точно не делать
1) Советую узнать о существовании foreach. Конструкции типа
for ($i = 0; $i < count($keys); $i++)
2) Перестать писать
if ($file == false)
3) Причесать весь код в один стиль, ибо похоже все это на свалку отходов, зато хорошо прокомментированную.
Программистам, написавшим это, надо воткнуть шланг в ухо и залить туда больше стандартов кодирования, в частности, PSR-1 и PSR-2, или очень внимательно изучить Zend-овый гайд. Классы для работы с БД — сплошной фейспалм, не говоря уже о таких классных вещах как get_class(), однобуквенные переменные типа $p и ещё 100500 «тонкостей».
З.Ы. Автолоадер люто доставляет.
Не удался наглый PR =\ Надо ник на гитхабчике поменять =) Кстати а штука то действительно неплохая =))
А ник то тут причем?)) По фотке очевидно узнали. Кстати, дизайн сайта прикольный.
Написанный фрейморк(пофигу как) дает + 100500 к ЧСВ, + 100 к харизме, + 100 к крутости в глазах других. :)
Найкращі коментарі пропустити