SimpleCoreTPL - небольшое ядро на PHP
1.
ramzes (24.05.2012 / 14:14)
Написал небольшое ядро, включающее в себя несколько классов и функций.
(Шаблонизатор, роутер, языковые пакеты, конфигурация скрипта)
решил выложить, возможно кому то пригодиться
Сильно не пинать, сайт писал 1 день, так что документации почти нет еще, но в качестве примеров можно просмотреть весь код сайта представляющего ядро
Посмотреть и скачать можно тут
http://code.smartoff.net/
2.
Дмитрий (24.05.2012 / 14:18)
1.
ramzes, это прикольней
http://ehhu.ru/people/user/6/blog/52161/
3.
ramzes (24.05.2012 / 14:20)
2.
Apocalyps, чем? это хрень какая то.
4.
Дмитрий (24.05.2012 / 14:23)
3.
ramzes, сам размер. Хотя твоё ядро вызывает больше доверия
5.
ramzes (24.05.2012 / 14:26)
4.
Apocalyps, это там ядро?
И через сколько времени после распаковки этого ядра вы сможете писать модули самого скрипта, не залазия в это самое "ядро"?
Это по моему не ядро, а какойто сверх урезанный роутер, и все.
6.
Александр (24.05.2012 / 15:22)
Надеюсь ты не против критики=)
$Tpl->assign('title', $config->_get('title')); было бы приятнее для глаз если бы было что то вроде $Tpl->setTitle($config->getTitle()); ,
config::write и write_ini_file зачем свой метод записи если есть serialize и parse_ini_file(не так много хостингов где нет этих функций)
php сам по себе шфблонизатор, почему бы не подключать шаблоны через include, к том же <%var%> не сильно отличается от <?=$var?> зато быстрее и больше возможностей.
7.
ramzes (24.05.2012 / 15:57)
6.
Муз-ТВ, разумеется не против
.
На счет get/settitle я уже думал, но как то не очень хочется перегружать класс лишними методами. Вобщем пока не решил.
Про запись ини файла, я если честно, просто не нашел информации по этому моменту, и слепил свой метод.
Если есть варианты получше, с удовольствием посмотрю
.
А на счет шаблонизатора, шаблоны так и подключаются, после генерации они и выглядят как <?php $var ?>
Там в исходниках я оставил пару файлов кеша, в них видно
Добавлено через 01:40 сек.
http://code.smartoff.net/source/file/tmp---cache---default__b930fe79bbce71a22244367d14a7eea4.cache/
8.
Александр (24.05.2012 / 16:52)
7,
На счет get/settitle я уже думал, но как то не очень хочется перегружать класс лишними методами.
сделай через __call тогда будет +1 метод всего.
9.
ramzes (24.05.2012 / 17:04)
8.
Муз-ТВ, хорошо, попробую
10.
ramzes (24.05.2012 / 17:23)
8.
Муз-ТВ, смотри, я правильно понял как это работает?
<?
function __call($method, $name=''){
$method = strtolower($method);
$type = substr($method, 0, 3);
$method_name = substr($method, 3);
if($type=='get'){
if($method_name!='' AND $this->_isset($method_name)){
return $this->_get($method_name);
}else{
return false;
}
}else if($type=='set'){
if($method_name!='' AND $this->_isset($method_name)){
$this->_set($method_name, $name);
return true;
}else{
return false;
}
}else{
return false;
}
}
<?
$title = $config->getTitle();
$config->setCopy($title);
11.
Ant0ha (24.05.2012 / 18:21)
Примитивненько). Советую забить на подобные велосипеды и переехать на нормальный фреймворк.
12.
Саня (24.05.2012 / 18:32)
11.
Ant0ha, Согласен
13.
ramzes (24.05.2012 / 18:36)
11.
Ant0ha, зачем мне переходить на что то?
14.
Ant0ha (24.05.2012 / 18:45)
Набьешь еще шишек с велосипедами.. Будешь писать проект, будешь развивать, улучшать, поймешь, что велосипед начинает неустраивать, перепишешь проект, опять будешь дополнять, опять перепишешь, потом снова и снова. В итоге будешь 70% своего времени тратить на бесполезное переписывание одного и того же. Не выгодно это, бесполезно, затратно и трудоемко.
Потом бросишь велосипедостроение и перейдешь на ФВ. Не ты первый, не ты последний.
Добавлено через 02:02 сек.
Лучше довериться опыту крупных сообществ, создающих профессиональные ядра. Эффективность заметно улучшится, как и стабильность создаваемых тобой продуктов.
15.
ramzes (24.05.2012 / 18:49)
14.
Ant0ha, ну за год мне не пришлось ни строчки изменить, хотя 4 совершенно различных сайта на нем стояло.
Так что это не довод
Я не пишу на заказ, не ваяю сайты для blizzard, и мне не надо монстров
Не мне одному
Добавлено через 06:17 сек.
тебе просто надо что то более сложное и функциональное, но не всем же
16.
Ant0ha (24.05.2012 / 18:58)
15.
ramzes, ну, это тебе решать, конечно. Просто когда пойдет речь о потоке проектов, о крупных проектах, которые нужно будет постоянно развивать, с большим количеством функционала, возникнет потребность перестраиваться..
17.
Владислав (24.05.2012 / 19:07)
Когда ты будешь работать в команде, тебе расскажут что удобнее.
Так все знают одно, а в твоем случае тебе придется обучать программистов своему дитю.
18.
iNeeXT (24.05.2012 / 19:17)
Правильно
All right reserved, а не
All right recerved.
Добавлено через 00:30 сек.
Первое что заметил =)
19.
ramzes (24.05.2012 / 19:26)
16.
Ant0ha, так я выше написал по этому поводу
Это не всемогущий фремворк, это небольшое ядро, для проектов не слишком большой сложности и обьема (ну скажем аналогичные ротору легко).
Добавлено через 02:22 сек.
17.
byvlad, я за пол часа научить могу, это куда быстрее чем освоить zf =)
Было бы желание, люди и ротор и джон и даже дцмс изучают, и не жалуются, а тут в 100раз меньше кода
Добавлено через 02:49 сек.
18.
iNeeXT, гг, косяк. Исправлю, спасибо
20.
JustZero (24.05.2012 / 19:40)
мне тоже вполне хватает легкого ядра.
21.
Серёга (24.05.2012 / 22:09)
19.
ramzes, хочешь более функциональное и в то же время легкое ядро?! Возьми например kohana-фреймворк, вытащи от туда нужные тебе классы и используй. Потом всё равно полностью на какой нибудь фреймворк перейдешь, так как поймешь как сильно он помогает. И проект на фреймворке легче будет поддерживать, даже разным людям.
22.
ramzes (24.05.2012 / 22:17)
21.
SVat, если мне понадобятся еще классы, я лучше сам их напишу, чем буду брать чужое
23.
Тимофей (24.05.2012 / 22:27)
А мне понравился...давно искал что-нибудь лёгкое..)
+1
24.
ramzes (24.05.2012 / 22:42)
23.
Wennel, спасибо
правда документации пока совсем нет..
25.
Владислав (24.05.2012 / 23:02)
22.
ramzes, ты getID3 тоже сам писал?)
26.
ramzes (24.05.2012 / 23:10)
byvlad (24 Мая 2012 / 23:02)
22. ramzes, ты getID3 тоже сам писал?)
http://code.smartoff.net/source/dir/classes/ где ты его тут видишь?
Добавлено через 00:38 сек.
и каким боком он относится к ядру?
27.
Александр (25.05.2012 / 09:28)
10, да, именно про это и говорил.
p.s Писание велосипедов имхо даёт более большой опыт чем использование фреймворков, но использовать такой код лучше только для себя или для маленьких проектов где 1 чел. В наше время стоимость чел/часов дороже железа, и 1 минус в пару миро секунд генерации страницы, спасёт от проблем с масштабируемостью, удобностью программировать(orm и тд), более быстрому изменяю кода (представь заказчик захотел что всё должно быть по другому), всем новым людям пришедшем в проект не придётся разбираться в чужом ядре, и тд.
28.
Ant0ha (25.05.2012 / 09:56)
ramzes (24 Мая 2012 / 22:17)
21. SVat, если мне понадобятся еще классы, я лучше сам их напишу, чем буду брать чужое
По-моему, это в корне не правильный подход. Но опять же, тебе решать.
29.
ramzes (25.05.2012 / 11:19)
27.
Муз-ТВ, ну это я понимаю, но это при условии крупного проекта и нескольких программистов.
Тут как бы для более простых проектов
30.
Андрюха (25.05.2012 / 12:31)
А фреймворки,не?
31.
Ant0ha (25.05.2012 / 12:51)
Wapruks (25 Мая 2012 / 12:31)
А фреймворки,не?
С добрым утром!)
32.
ensteyn-asen (25.05.2012 / 13:07)
1.
ramzes, неплохо... грамотно
33.
Андрюха (25.05.2012 / 13:10)
31. Не читал тему) 1стр только
34.
ramzes (25.05.2012 / 16:02)
30.
Wapruks, ребят, ну я ж не спрашиваю чем пользоваться
35.
ramzes (25.05.2012 / 23:20)
31.
Ant0ha, зашел на твой смех.моби, сравнить скорость, разница в 2-3 раза все таки
700-900 против 200-400.
ни в коем случае не хочу сказать что у тебя хуже или у меня лучше, (уж как кодер то ты точно лучше =))
я к тому что "ничего сверх необходимого" тоже имеет свои плюсы
36.
Ant0ha (25.05.2012 / 23:24)
У меня там еще по 2 внешних запроса на вапстарт, оно на то и выходит ;)
37.
ramzes (25.05.2012 / 23:27)
36.
Ant0ha, счетчики что ли?
я только время ожидания самой страницы смотрю
38.
Ant0ha (25.05.2012 / 23:27)
Когда рекламу убираю, сайт начинает летать )
Добавлено через 01:20 сек.
Реклама с плюс1, она участвует в генерации самой страницы.
39.
ramzes (25.05.2012 / 23:30)
38.
Ant0ha, не кешируются что ли данные?%)
ну тогда понятно
40.
Ant0ha (25.05.2012 / 23:31)
Ну, не хотят они кэшировать видимо... их проблемы.
Добавлено через 06:15 сек.
Можешь, кстати,
http://suj.ru затестить, там без вапстарта
41.
ramzes (25.05.2012 / 23:48)
40.
Ant0ha, да, 150-200 и на удивление стабильно
42.
ramzes (26.05.2012 / 00:24)
Оказалось что filter_var() не только с мылом косячил.. с урлами вообще хня какая то..
Переписал блин методы, и тут у меня инет кончился))) фиг зальешь
43.
Магомедбег (26.05.2012 / 10:43)
42.
ramzes, то есть не стоит filter_var() использовать вместо регулярок?
44.
ramzes (26.05.2012 / 11:08)
43.
Artelos, только для валидации урлов.
Он точно пропускает ghttp:://site.ru/rhhrf
например
45.
Ant0ha (26.05.2012 / 11:20)
ramzes (26 Мая 2012 / 00:24)
Оказалось что filter_var() не только с мылом косячил.. с урлами вообще хня какая то..
Переписал блин методы, и тут у меня инет кончился))) фиг зальешь
Вот тебе и переписывания) А по сути ты сейчас занят низкоуровневой работой, которая в ФВ уже реализована и работает стабильно, тебе не нужно думать о таких проблемах как валидация и тп.
46.
KOZZ (26.05.2012 / 11:42)
45.
Ant0ha, какой framework посоветуешь, из более простых, с подробной документацией?
желательно чтобы можно было xtemplate прикрутить
47.
Артур (26.05.2012 / 11:58)
Хороший программист должен выделять грань между своим и чужим
Чужой код это не страшно. Если программист только учиться, то о стороннем, как и о иде нужно забывать, но устоявшемуся невозбрано использовать более качественные и профессиональные инструменты, а не самодельные молотки
48.
Ant0ha (26.05.2012 / 12:03)
46.
eGo Работает на Себя, я фанат коханы.. думаю, этим всё сказано. Еще хвалят yii, но мне он не очень нравится, чисто субъективно. CI устарел, не советую на нем работать. Symfony 2 хвалят и она работает с шаблонизатором twig, но я на ней ничего не писал и не могу о ней сказать ни хорошего, ни плохого. И шаблонизаторы я не очень люблю, предпочитаю нативные виды.
Добавлено через 07:43 сек.
Еще смотрю в сторону Django (на питоне) и RoR (на ruby), но это уже другая история. С одной стороны там есть не плохие преимущества над php фреймворками. С другой стороны мне надо развивать свою CMS на php и растрачивание сил и времени на другие технологии будет не очень выгодным занятием.
49.
KOZZ (26.05.2012 / 12:13)
48.
Ant0ha, ясно, спасибо
я скачал себе yii и kohana еще до того как задать вопрос.
yii напугал сразу, kohana больше понравился.
после твоих слов еще больше убедился в своем выборе
50.
ramzes (26.05.2012 / 12:34)
Ant0ha (26 Мая 2012 / 11:20)
Вот тебе и переписывания) А по сути ты сейчас занят низкоуровневой работой, которая в ФВ уже реализована и работает стабильно, тебе не нужно думать о таких проблемах как валидация и тп.
Нет, ты не улавливаешь сути темы
Зачем мне фремворк?
Что я с еим буду делать?
Писать 101ый движок?)
Интереснее возится с этим
это хобби, не работа
Лучше по самому коду что ни будь скажи, ни когда не против поучиться
51.
Ant0ha (26.05.2012 / 12:53)
Ладно, сори, не буду доставать) А по коду - я уже высказал свое мнение) Велосипеды - тупиковая ветвь, тут хоть как корректируй, исправляй и тд.
52.
Ant0ha (26.05.2012 / 13:06)
$config->_isset('password')
Если вначале метода/переменной класса стоит символ подчеркивания, то это значит, что метод/переменная private или protected. Поэтому такой метод/переменную нельзя вызвать за пределами экземпляра этого класса.
Добавлено через 02:31 сек.
И в целом стиль кода разболтанный, одни классы именуются с большой буквы, другие с маленькой, так же и с переменными.
53.
ramzes (26.05.2012 / 13:16)
52.
Ant0ha, учту с именами
А про _ в начале, это типа стандарта такого?
Я использую потому что редактор ругается на function isset() как на занятое имя функции.
54.
Ant0ha (26.05.2012 / 13:18)
Не указаны private/protected/public модификаторы методов/переменных. Можно было бы подумать, что пишешь для php4, но почему тогда используется __construct(), когда должны быть методы совпадающие с названием класса чтобы выполнять роль конструктора.
define('FULL_IP', 'fullip');
define('ONESTAR_IP', 'midleip');
define('TWOSTAR_IP', 'smallip');
class ip
Это можно было сделать в константах самого класса ip
55.
Артур (26.05.2012 / 13:19)
Ant0ha (26 Мая 2012 / 13:06)
$config->_isset('password')
Если вначале метода/переменной класса стоит символ подчеркивания, то это значит, что метод/переменная private или protected.
С каких пор? ))
56.
Ant0ha (26.05.2012 / 13:20)
А про _ в начале, это типа стандарта такого?
ага, это было очень актуально в php4 (так как не было модификаторов видимости члена класса), сейчас это не обязательно для php5, но желательно. В любом случае, подчеркивание в начале публичного метода - не красиво.
Добавлено через 02:48 сек.
55.
Bashka, ответ немного выше.
Добавлено через 07:02 сек.
http://kohanaframework.org/3.2/guide/api/Request
Посмотри на именование публичных и приватных методов/свойств.
А про _ в php4 было написано в книге "PHP. Объекты, шаблоны и методики программирования" и как видно в примере кода выше, кохановцы сохранили это правило и сейчас.
57.
Артур (26.05.2012 / 13:31)
С версии 5 стандарт кончился значит )
58.
Ant0ha (26.05.2012 / 13:37)
Имхо, не стоит его указывать и сейчас для публичных членов дабы не вводить в заблуждение программистов, работавших с php4 и тех, кто до сих пор применяет это правило.
Добавлено через 01:08 сек.
Просто из эстетических соображений)
59.
Артур (26.05.2012 / 13:52)
А как же методы Object? В спл библиотеке вроде достаточно подобных методов в публичной области
60.
Ant0ha (26.05.2012 / 14:03)
59.
Bashka, ну, если тебе это покоя не дает, покажи где именно. Хотя, спорить с тобой - пустая трата времени. Я тебя очень часто совсем не понимаю). Я высказал свою позицию и подкрепил ее двумя фактами. Не понятно, зачем тебе эти "замеры пиписек". Самоутверждение?
61.
Андрюха (26.05.2012 / 14:40)
48. По моему норм. Самый быстрый и очень хорошо документированный. Чем он устарел то? Медленно разрабатывают,это да. Но можно и стороннее юзать что-то
62.
Артур (26.05.2012 / 16:58)
60.
Ant0ha, ну дело ваше
63.
Ant0ha (26.05.2012 / 20:58)
61.
Wapruks, я не хочу очередной раз это доказывать, надоело. Покопайся по этой теме в инете.
Для примера:
http://forum.vingrad.ru/forum/topic-326020/anchor-entry2329741/30.html
http://forum.searchengines.ru/showthread.php?t=544894
Добавлено через 00:24 сек.
62.
Bashka, спасибо
64.
ramzes (01.06.2012 / 05:33)
Переписал почти все классы
Еще дописываю функции сбора js файлов в один общий, и такую же для внешних функций
65.
Виталий (01.06.2012 / 08:06)
а не легче бы использовать методы __set, __get, __isset и __unset в классе Registry?
66.
Виталий (01.06.2012 / 12:27)
кстать тут ошибка: All right recerved
по идее нужно reserved
67.
ramzes (01.06.2012 / 12:53)
Про ошибку я знаю, руки ни как не дойдут
68.
юЮЮфюв (24.08.2012 / 11:10)
Развитие на этом не остановилось, надеюсь?
69.
ramzes (24.08.2012 / 14:29)
Я пока что в диабло режусь))
Нужны идеи
70.
Phantom (24.08.2012 / 18:32)
По всем вопросам обращаться на ramzes[dot]smartoff.net
dot О_о
URL:
https://visavi.net/topics/32149