Давайте посмотрим мою ЦМС

Raziel[SD]

untitled00
раз уж создаете цмс в 2011 году, так используйте пространства имен!

да и на цмс код не тянет, максимум очередной фреймворк для себя. В цмс главное - модульность, причем очень строгая, один модуль не влияет на работу другого.
ага, не забыть про XML+XSLT, и вообще нынче модная штука node.js, почему бы не попробовать ? а лучше связку PHP+ node.js, ведь это форум по PHP. Главное понимать, чем больше различных новомодных фич, тем лучше. Они сделают ваш код недосягаемо крутым и все будут вами восхищаться при работе с вашим проектом.
:)
 

craz

Нестандартное звание
ага, не забыть про XML+XSLT, и вообще нынче модная штука node.js, почему бы не попробовать ? а лучше связку PHP+ node.js, ведь это форум по PHP. Главное понимать, чем больше различных новомодных фич, тем лучше. Они сделают ваш код недосягаемо крутым и все будут вами восхищаться при работе с вашим проектом.
:)
причем тут XML - json рулит.
 

Активист

Активист
Команда форума
Кому интересно, можете глянуть информацию в репозитории об изменениях.

1. Добавил простую реализацию модуля страницы.
http://svn.local.prime-gr.ru/svn/baikalia.web.local/modules/pages/
(Собственно админка без юзабилити: http://baikalia.localhost/ru/admin/pages/index.html )
Прошу посмотреть.

2. Добавил роутер. Сделал слеюущее:
Добавил интерфес
PHP:
<?php 
interface iRouter {
	public function getUrl();
	public function getUrlPart();
	public function getParents();
}
?>
И сам роутер (вызвает также из core), как вам реализация (больше всего интересует метод makeUrl):
http://svn.local.prime-gr.ru/svn/baikalia.web.local/core/classes/class.router.php

По страницам:
Собственно объект самих страниц:
http://svn.local.prime-gr.ru/svn/baikalia.web.local/modules/pages/classes/pages/page.php

По нему есть пара вопрос - точнее один для всех - можно ли сделать лучше следующие методы:
(меня смущает тот факт, что при вызове этих обектов из двух идентичных обектов типа page будут запрос к SQL)
PHP:
	public function getParents() {
		if ($this->_parents === false) {
			if ($this->parentId === 0) {
				$this->_parents = array();
			} else {
				$this->_parents = array();
				$parent = $this;
				do {
					if (($parent = $parent->getParent()) !== false) {
						array_unshift($this->_parents, $parent);						
					} 
				} while($parent !== false && $parent->getParentId() && $parent->getId());
			}
		}
		return $this->_parents;
	}
PHP:
	public function getChilds() {
		if ($this->_childs === false) {
			$aggregator = new pagesAggregator();
			$aggregator->appendByParent($this);
			$this->_childs = $aggregator->all();
		} else {
			$this->_childs = array();
		}
		
		return $this->_childs;
	}
Ну и собственно аггрегатор (мепер), что по нему можно сказать:
http://svn.local.prime-gr.ru/svn/baikalia.web.local/modules/pages/classes/pages/aggregator.php
 

Alien85

I like my cat
http://svn.local.prime-gr.ru/svn/baikalia.web.local/core/classes/class.router.php
public function makeUrl: return "/".implode("/", $url)."/".$object->getUrlPart().".html";
ограничивается только html

public function getAdminUrl()
а вот этого, как мне кажется, в роутере быть не должно, да и админку я бы сделал отдельным приложением, а не модулем

Raziel[SD], вы вообще о чем???

Есть суть в пространствах? Зачем они нужны? В данном случае?
зачем ООП? можно и так, процедурно писать. Вы какие-то странные вопросы задаете. Как простейший пример: библиотеки.
 

Активист

Активист
Команда форума
> ограничивается только html
А у меня априори в ЧПУ только html, зачем мне что-то другое.

> отдельным приложением, а не модулем
Модуль и есть отдельное приложение, работа которого (модуля) строго изолирована и ни как не влияет. Кроме того, задача модуля админки сходится к передачи интерации в контроллер модуля, проверки прав и смены шаблона и все. Фактически, модуля администрирования несущевствует, и правильно.

> не запишется в стандартный лог php
В логи мне писать не нужно. Эта проблема может возникнуть только в процессе разработки, из-за неправильной работой с объектами.

1. Неймспейсы использовать в данном приложении нет смысла, не нужно применять технологии ради их применения.

2.> вопрос, а если где то том дальше захочу отдать какойто файл у меня проблем не будет?
Не будет, посмотрите .htaccess
 

Mols

Новичок
Активист
1. Вообще идея создания УРЛов через единый механизм предполагает то, что абсолютно все УРЛы на сайте будут создаваться через этот самый механизм.
Отсюда "полной" изоляции модулей не будет. Как минимум на главной у Вас будут ссылки на разные модули. Но и в процессе работы наверняка придётся ссылаться из модуля на модуль.
2. Вы не учли того, что УРЛ может быть не только на детальное отображения объекта. (то есть нужны ещё параметры для makeUrl)
2.1 Если объект существует и определён , то как минимум. ещё нужны урлы для его редактирования, удаления
2.2 Объект не существует (урл на создание/добавление материала) или не определён (урл на поиск обьекта по критериям, отображение материалов в виде списка и т.д и т.п)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Alien85
шасть из темы, тебе уже не только я тут написал, что это ему ни к чему.
 

Alien85

I like my cat
Вы что их боитесь что ли? namespace-ов?
ни кто и не говорил, что их надо применять повсеместно.

вот пример, где они точно необходимы:
http://svn.local.prime-gr.ru/svn/baikalia.web.local/core/libs/phpmailer/class.smtp.php

тут используется библиотека phpmailer, в ней класс SMTP. Если я подключу другую библиотеку с классом SMTP возникнет коллизия.

если вы убедите меня, что и тут это не нужно, то я вообще уйду с этого форума. Только не надо говорить, когда надо будет, тогда и прикрутим namespace-ы или что это проблемы разработчика phpmailer-а.
 

AmdY

Пью пиво
Команда форума
Alien85
на данный момент у меня лишь один проект изначально создавался под php 5.3. а для CMS совместимость с 5.2 и вовсе обязательное условие.
 

Alien85

I like my cat
AmdY, да, про хостинги я и не подумал...
а разве много таких осталось, кто 5.3 не поддерживает? (я сам просто не знаю)
версия 5.2 уже больше месяца не поддерживается, рано или поздно все равно все перейдут, как мне кажется.
 

shureen

Милорд Лось Кристофер
Alien85
даже очень много хостингов не поддерживает
 

vovanium

Новичок
версия 5.2 уже больше месяца не поддерживается, рано или поздно все равно все перейдут, как мне кажется.
И что с того что php 5.2 не поддерживается, что в связи с этим все свой софт резко переписали на php 5.3? Начиная с того что куча софта начнет плеваться ошибками deprecated, думаете юзеры скажут спасибо? На многих хостингах еще даже php 4 можно юзать.
 

craz

Нестандартное звание
ну не правда, но с Alien85 я тоже не согласен - нахрен такая категоричность не нужна
 

Koc

Новичок
И что с того что php 5.2 не поддерживается, что в связи с этим все свой софт резко переписали на php 5.3? Начиная с того что куча софта начнет плеваться ошибками deprecated, думаете юзеры скажут спасибо? На многих хостингах еще даже php 4 можно юзать.
так пишите нормально а не через пень колодой и все ок будет. Следите за изменениями в языке, не используете то, что deprecated.


а то получается так: у меня руки из жопы, я написал черти что, а потом вышел 5.3, начал ругаться на мой код. Ой, какой плохой 5.3
 
  • Like
Реакции: AmdY

craz

Нестандартное звание
я решаю бизнес задачу пользуясь актуальным на данный момент инструментом какого хрена я должен думать о том что будет через 500 лет? я должен написать так что на той платформе на которой я написал приложение код будет работать вечно без глюков и тормозов. для ЭНИАК тоже надо было писать приложение с учетом что скоро появиться мультач?
 

vovanium

Новичок
Koc
ага нужно было еще во времена php 4 писать, с учетом php 5.3, что за бред? далеко не все сайты обновляют свой движок каждые год-два, чтобы соответствовать современным тенденциям...
 
Сверху