|
|
|
| Пришла недавно идея разобрать полностью код Joomla, чтобы лучше понять принцип её работы, а заодно повысить свой левел в программировании Wink
Начал с того, что распаковал архив на лок. сервер под управлением Denwer'а. Решил сначала не проводить инсталляцию, чтобы заодно понять как она проходит. Начал естественно с файла index.php в корневой директории Jooml'ы. Разбираю код последовательно, строка за строкой, если встречаются include то перехожу к включаемому файлу и разбираю его, потом возвращаюсь к первоначальному. Заметки пишу в Word'е, потом возможно сделаю CHM файл =)
Если кто хочет, может присоединиться к разборке) Дело в том, что кода много и встречаются инструкции, которые я не знаю, а останавливаться на каждой подолгу будет контр-продуктивно ))
Поэтому буду рад, если кто нибудь мне поможет) На данный момент у меня такие вопросы:
1) Какой смысл разбивать строку а потом склеивать:
Код:
$parts = explode( DS, JPATH_BASE );
define( 'JPATH_ROOT', implode( DS, $parts ) );
У меня правда есть одна догадка - чтобы избавится от слэша в конце пути, если он там вдруг появится
2) @set_magic_quotes_runtime( 0 );
3) @ini_set('zend.ze1_compatibility_mode', '0');
Следующие два касаются как я понял конфигурации PHP , только что именно и для чего они я пока не знаю.
4) что за инструкция header( 'Location: installation/index.php' );
5) Что делают операторы =&, ::, и -> раньше знал, но счас никак не могу вспомнить | |
|
|
|
|
|
|
|
для: sasha1133
(09.02.2010 в 23:43)
| | > 1) Какой смысл разбивать строку а потом склеивать
Поочередно выведите на экран константы, а также то, что возвращают функции работы с массивами - так вы можете приблизиться к разгадке этой тайны.
> 2) @set_magic_quotes_runtime( 0 );
> 3) @ini_set('zend.ze1_compatibility_mode', '0');
Гугл в помощь.
Сходу нашло, например, это
> 4) что за инструкция header( 'Location: installation/index.php' );
Только в гугл. Почему это инструкция? Обычная функция, в которую передается параметр.
header() отправляет заголовк, в качестве аргумента принимает собстно то, что нужно отправить (это также нужно знать), в частности Location: installation/index.php дает сигнал браузеру, что нужно перенаправить пользователя на страницу installation/index.php
> 5) Что делают операторы =&, ::, и -> раньше знал, но счас никак не могу вспомнить
Такое не забывается =) Это ООП. Его либо знаешь, либо не знаешь.
К чему я это.. Начните ка вы с азов. Мне кажется, некий пласт того, что нужно бы знать, вы перепрыгнули. Как минимум - уметь искать в гугле нужную информацию о настройках php.ini, функциях и т.д. Откуда, вы думаете, люди на форумах все знают?) Оттуда, и, конечно же, отсюда. | |
|
|
|
|
|
|
|
для: neadekvat
(10.02.2010 в 00:09)
| | 1) Получается одно и тоже, исходная и конечные строки одинаковы.
2) zend.ze1_compatibility_mode
Включает режим совместимости с Zend Engine 1 (PHP 4). Это влияет на клонирование, приведение типов и сравнение объектов. (Это так, обобщённый ответ нашел, которого пока мне хватит)
3) If magic_quotes_runtime is enabled, most functions that return data from any sort of external source including databases and text files will have quotes escaped with a backslash. If magic_quotes_sybase is also on, a single-quote is escaped with a single-quote instead of a backslash.
(Примерно понял на что влияет, но буду рад если кто разъяснит)
4) А что в таком случае этот http заголовок? То что функция header перенаправляет на другую страницу я понял.
5) Из этого помню только -> , обращение к свойствам и методам объекта, если не ошибаюсь. А вот :: и =& не помню. Но это не значит что я не понимаю принципов объектного программирования. Буду рад услышать для чего они (ну пожалуйста =) | |
|
|
|
|
|
|
|
для: sasha1133
(10.02.2010 в 00:26)
| | 1) Ну, лично я не в курсе, для чего так сделали =) Мб, кто-то здесь знает.
3) Дословно, "если magic_quotes_runtime включены, большинство функций, которые возвращают какие-либо данные из внешних источников, включая базы данных и текстовые файлы, будут экранировать кавычки обратным слешем ( \ ). Если же и magic_quotes_sybase включено, то одинарные кавычки будут экранированы одинарной кавычкой, а не обратным слешем."
4) Э не, рассказывать про http заголовки - надо не на форуме, про это достаточно информации в интернете.
> То что функция header перенаправляет на другую страницу я понял.
Нет, не поняли. header() отправляет заголовки, там может быть не только переадресация, но и информация о кодировке, последнем изменении материала и еще куча всего.
5) Понимать принципы и знать, как применяется - также разные вещи.
Я сам в ООП не профи. Но =& с пятой версии, по-моему, не применяется, а :: - обращение к статическим членам и методам класса, без создания его (класса) объекта | |
|
|
|
|
|
|
|
для: neadekvat
(10.02.2010 в 00:49)
| | 1) создается массив $paths, о котором все забыли.
можно лишь добавить, что а) функция header() не отправляет заголовки,
и б) говорить в данном контексте о заголовках во множественном числе , строго оговоря, некорректно. | |
|
|
|
|
|
|
|
для: neadekvat
(10.02.2010 в 00:49)
| | Но =& с пятой версии, по-моему, не применяется
интересно | |
|
|
|
|
|
|
|
для: sasha1133
(09.02.2010 в 23:43)
| | Вроде вы приводите достаточно устаревшую версию?
Сейчас там придумали заковырки покурче, да такие что даже никак и не поймешь что к чему :) | |
|
|
|
|
|
|
|
для: tvv123456
(10.02.2010 в 03:02)
| | в Джумле нет никакой логики. а та, что есть, не поддается осмыслению. с ней могут только
люди, начисто лишенные воображения и каких-либо навыков программирования. фтопку! | |
|
|
|
|
|
|
|
для: elenaki
(10.02.2010 в 07:53)
| | >в Джумле нет никакой логики. а та, что есть, не поддается осмыслению.
Как я понимаю, такова плата за универсальность... | |
|
|
|
|
|
|
|
для: Loki
(10.02.2010 в 11:23)
| | То есть может быть проще научится с нуля писать код, чем джумлу трогать?) | |
|
|
|
|
|
|
|
для: sasha1133
(10.02.2010 в 19:39)
| | намного. причем, вы сможете делать ЛЮБЫЕ приложения. а если зациклитесь на Джумле, будете делать ТОЛЬКО Джумлу. зачем себя ограничивать? | |
|
|
|
|
|
|
|
для: elenaki
(10.02.2010 в 20:01)
| | Ну спасибо, буду писать уже второй сайт. Хотел перейти к использованию движка, чтобы быстрее делать сайты. Но вручную вроде лучше и интереснее =) | |
|
|
|
|
|
|
|
для: sasha1133
(11.02.2010 в 02:15)
| | 2-ой сайт? Я написал пока 5 сайтов. И когда пишу последующий сайт, понимаю как много я ошибок допустил в предыдущем :)
А насчет разбора чужих скриптов:
Это все-таки достаточно сложно понять логику чужого человека, даже если вы знаете все функции которые человек использует, но вот логику для чего он это делает и прочее понять бывает очень сложно. Джумла не ислкючение, там работают профессионалы, но это универсалка и на комментарии они явно скупяться поэтому разбор их скриптов отнимает много времени. | |
|
|
|
|
|
|
|
для: tvv123456
(11.02.2010 в 02:37)
| | Согласен.
Кстати по поводу ошибок. 1 й сайт получился довольно таки стабильным, то есть работает пока без сбоев. Когда начинал его делать, в php знал чуть более чем команду echo =)
Конечно там есть к чему придраться, особенно к верстке сайта (использовал таблицы и <br /> для отступов). Зато всё своими руками и работает!) Если интересно - autoprof.by только к сожалению сейчас там нет автомобилей (в продаже нет) так что смотреть почти не на что ( Когда есть автомобили там на главной странице симпатично и поиск работает как часы)) | |
|
|
|
|
|
|
|
для: sasha1133
(11.02.2010 в 02:50)
| | Я вообще никакого отоношения к программирования не имею(моя специальность: Электрооборудование и электрохохяйство промышленных сетей(я вообще если честно только в универе узнал что есть напряжения по 750 тысяч вольт :))))))))), но мне это все было интересно и я начал (где-то год назад узнал что есть такой язык как html) потом узнал что приоритетом сейчас в сети являеться php(где-то месяца 4 назад), и сам потихоньку пытаюсь получить знания.
Данный форум мне очень помог! Так что вы на джумле не циклитесь учите все что нужно, а как срочно нужна будет джумла изучите и ее | |
|
|
|
|
|
|
|
для: sasha1133
(11.02.2010 в 02:50)
| | Верстка это фигня: со временем(если будете продолжать) вы будете нанимать на верстку и дизайн отдельных людей. Все-таки html и программный модуль сайта нужно отделять. Допустим имея общий шаблон мы можем разделить его на 2 условных части:
верхняя часть(до вывода основного контента)
Нижняя часть: после вывода основного контента
И засунуть эти 2 части в различные файлы, между подключениями этих файлов можем выводить контент при помощи программного модуля
_________________
Думаю все после этого комментария покажут свое ослоумие и будут приводить в пример шаблонизаторы, но это ой как не обязательно. | |
|
|
|
|
|
|
|
для: tvv123456
(11.02.2010 в 03:04)
| | Кстати я примерно так и делал - т.е. модуль для хедера, меню и т.п. Просто подключал с помощью include.
А по поводу шаблонизатора, что это такое? А то я когда хотел разобраться - не получилось(
По какому принципу он работает? | |
|
|
|
|
|
|
|
для: sasha1133
(10.02.2010 в 19:39)
| | Ознакомиться в любом случае стоит. Проекты подобного масштаба пишут не самые глупые люди. Другой вопрос - что если Вы не поймете (в силу недостатка опыта, например) почему они реализовали что-либо конкретным образом, то это знакомство будет попусту потраченным временем. | |
|
|
|
|
|
|
|
для: Loki
(11.02.2010 в 10:03)
| | Боюсь я как раз таки не пойму некоторых вещей, и в любом случае потрачу кучу времени. Так что пока я от этой идеи отказался - решил опять таки написать сайт с нуля (2-ой уже). | |
|
|
|