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 ?>
Там в исходниках я оставил пару файлов кеша, в них видно

Добавлено через 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 совершенно различных сайта на нем стояло.
Так что это не доводsmile
Я не пишу на заказ, не ваяю сайты для blizzard, и мне не надо монстровsmile
Не мне одному

Добавлено через 06:17 сек.
тебе просто надо что то более сложное и функциональное, но не всем же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.

Добавлено через 00:30 сек.
Первое что заметил =)

19. ramzes (24.05.2012 / 19:26)
16. Ant0ha, так я выше написал по этому поводуsmile
Это не всемогущий фремворк, это небольшое ядро, для проектов не слишком большой сложности и обьема (ну скажем аналогичные ротору легко).

Добавлено через 02:22 сек.
17. byvlad, я за пол часа научить могу, это куда быстрее чем освоить zf =)
Было бы желание, люди и ротор и джон и даже дцмс изучают, и не жалуются, а тут в 100раз меньше кода

Добавлено через 02:49 сек.
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/ где ты его тут видишь?

Добавлено через 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, если мне понадобятся еще классы, я лучше сам их напишу, чем буду брать чужое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)
Когда рекламу убираю, сайт начинает летать )

Добавлено через 01:20 сек.
Реклама с плюс1, она участвует в генерации самой страницы.

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

40. Ant0ha (25.05.2012 / 23:31)
Ну, не хотят они кэшировать видимо... их проблемы.

Добавлено через 06:15 сек.
Можешь, кстати, 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, но я на ней ничего не писал и не могу о ней сказать ни хорошего, ни плохого. И шаблонизаторы я не очень люблю, предпочитаю нативные виды.

Добавлено через 07:43 сек.
Еще смотрю в сторону 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. Поэтому такой метод/переменную нельзя вызвать за пределами экземпляра этого класса.

Добавлено через 02:31 сек.
И в целом стиль кода разболтанный, одни классы именуются с большой буквы, другие с маленькой, так же и с переменными.

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, но желательно. В любом случае, подчеркивание в начале публичного метода - не красиво.

Добавлено через 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)
Переписал почти все классы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