SimpleCoreTPL - небольшое ядро на PHP

1. ramzes 24.05.2012 / 14:14
Написал небольшое ядро, включающее в себя несколько классов и функций.
(Шаблонизатор, роутер, языковые пакеты, конфигурация скрипта)
решил выложить, возможно кому то пригодитьсяsmile
Сильно не пинать, сайт писал 1 день, так что документации почти нет еще, но в качестве примеров можно просмотреть весь код сайта представляющего ядроsmile
Посмотреть и скачать можно тут 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. Муз-ТВ, разумеется не противsmile .
На счет get/settitle я уже думал, но как то не очень хочется перегружать класс лишними методами. Вобщем пока не решил.
Про запись ини файла, я если честно, просто не нашел информации по этому моменту, и слепил свой метод.
Если есть варианты получше, с удовольствием посмотрюsmile .
А на счет шаблонизатора, шаблоны так и подключаются, после генерации они и выглядят как <?php $var ?>
Там в исходниках я оставил пару файлов кеша, в них видно
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% своего времени тратить на бесполезное переписывание одного и того же. Не выгодно это, бесполезно, затратно и трудоемко.
Потом бросишь велосипедостроение и перейдешь на ФВ. Не ты первый, не ты последний.
Лучше довериться опыту крупных сообществ, создающих профессиональные ядра. Эффективность заметно улучшится, как и стабильность создаваемых тобой продуктов.

15. ramzes 24.05.2012 / 18:49
14. Ant0ha, ну за год мне не пришлось ни строчки изменить, хотя 4 совершенно различных сайта на нем стояло.
Так что это не доводsmile
Я не пишу на заказ, не ваяю сайты для blizzard, и мне не надо монстровsmile
Не мне одному
тебе просто надо что то более сложное и функциональное, но не всем жеsmile

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.
Первое что заметил =)

19. ramzes 24.05.2012 / 19:26
16. Ant0ha, так я выше написал по этому поводуsmile
Это не всемогущий фремворк, это небольшое ядро, для проектов не слишком большой сложности и обьема (ну скажем аналогичные ротору легко).
17. byvlad, я за пол часа научить могу, это куда быстрее чем освоить zf =)
Было бы желание, люди и ротор и джон и даже дцмс изучают, и не жалуются, а тут в 100раз меньше кода
18. iNeeXT, гг, косяк. Исправлю, спасибоsmile

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, если мне понадобятся еще классы, я лучше сам их напишу, чем буду брать чужоеsmile

23. Тимофей 24.05.2012 / 22:27
А мне понравился...давно искал что-нибудь лёгкое..)
+1

24. ramzes 24.05.2012 / 22:42
23. Wennel, спасибоsmile правда документации пока совсем нет..

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/ где ты его тут видишь?
и каким боком он относится к ядру?

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, если мне понадобятся еще классы, я лучше сам их напишу, чем буду брать чужоеsmile

По-моему, это в корне не правильный подход. Но опять же, тебе решать.

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, ребят, ну я ж не спрашиваю чем пользоватьсяsmile

35. ramzes 25.05.2012 / 23:20
31. Ant0ha, зашел на твой смех.моби, сравнить скорость, разница в 2-3 раза все такиsmile
700-900 против 200-400.
ни в коем случае не хочу сказать что у тебя хуже или у меня лучше, (уж как кодер то ты точно лучше =))
я к тому что "ничего сверх необходимого" тоже имеет свои плюсыsmile

36. Ant0ha 25.05.2012 / 23:24
У меня там еще по 2 внешних запроса на вапстарт, оно на то и выходит ;)

37. ramzes 25.05.2012 / 23:27
36. Ant0ha, счетчики что ли?
я только время ожидания самой страницы смотрюsmile

38. Ant0ha 25.05.2012 / 23:27
Когда рекламу убираю, сайт начинает летать )
Реклама с плюс1, она участвует в генерации самой страницы.

39. ramzes 25.05.2012 / 23:30
38. Ant0ha, не кешируются что ли данные?%)
ну тогда понятноsmile

40. Ant0ha 25.05.2012 / 23:31
Ну, не хотят они кэшировать видимо... их проблемы.
Можешь, кстати, http://suj.ru затестить, там без вапстарта

41. ramzes 25.05.2012 / 23:48
40. Ant0ha, да, 150-200 и на удивление стабильноsmile

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
Хороший программист должен выделять грань между своим и чужим smile Чужой код это не страшно. Если программист только учиться, то о стороннем, как и о иде нужно забывать, но устоявшемуся невозбрано использовать более качественные и профессиональные инструменты, а не самодельные молотки smile

48. Ant0ha 26.05.2012 / 12:03
46. eGo Работает на Себя, я фанат коханы.. думаю, этим всё сказано. Еще хвалят yii, но мне он не очень нравится, чисто субъективно. CI устарел, не советую на нем работать. Symfony 2 хвалят и она работает с шаблонизатором twig, но я на ней ничего не писал и не могу о ней сказать ни хорошего, ни плохого. И шаблонизаторы я не очень люблю, предпочитаю нативные виды.
Еще смотрю в сторону Django (на питоне) и RoR (на ruby), но это уже другая история. С одной стороны там есть не плохие преимущества над php фреймворками. С другой стороны мне надо развивать свою CMS на php и растрачивание сил и времени на другие технологии будет не очень выгодным занятием.

49. KOZZ 26.05.2012 / 12:13
48. Ant0ha, ясно, спасибо smile
я скачал себе yii и kohana еще до того как задать вопрос.
yii напугал сразу, kohana больше понравился.
после твоих слов еще больше убедился в своем выборе smile

50. ramzes 26.05.2012 / 12:34
Ant0ha (26 Мая 2012 / 11:20)

Вот тебе и переписывания) А по сути ты сейчас занят низкоуровневой работой, которая в ФВ уже реализована и работает стабильно, тебе не нужно думать о таких проблемах как валидация и тп.
Нет, ты не улавливаешь сути темыsmile
Зачем мне фремворк?
Что я с еим буду делать?
Писать 101ый движок?)
Интереснее возится с этимsmile это хобби, не работаsmile
Лучше по самому коду что ни будь скажи, ни когда не против поучиться

51. Ant0ha 26.05.2012 / 12:53
Ладно, сори, не буду доставать) А по коду - я уже высказал свое мнение) Велосипеды - тупиковая ветвь, тут хоть как корректируй, исправляй и тд.

52. Ant0ha 26.05.2012 / 13:06
$config->_isset('password')

Если вначале метода/переменной класса стоит символ подчеркивания, то это значит, что метод/переменная private или protected. Поэтому такой метод/переменную нельзя вызвать за пределами экземпляра этого класса.
И в целом стиль кода разболтанный, одни классы именуются с большой буквы, другие с маленькой, так же и с переменными.

53. ramzes 26.05.2012 / 13:16
52. Ant0ha, учту с именамиsmile
А про _ в начале, это типа стандарта такого?
Я использую потому что редактор ругается на 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, но желательно. В любом случае, подчеркивание в начале публичного метода - не красиво.
55. Bashka, ответ немного выше.
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 и тех, кто до сих пор применяет это правило.
Просто из эстетических соображений)

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
62. Bashka, спасибо

64. ramzes 01.06.2012 / 05:33
Переписал почти все классыsmile
Еще дописываю функции сбора js файлов в один общий, и такую же для внешних функций

65. Виталий 01.06.2012 / 08:06
а не легче бы использовать методы __set, __get, __isset и __unset в классе Registry?smile

66. Виталий 01.06.2012 / 12:27
кстать тут ошибка: All right recerved smile по идее нужно 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