LIMB CMS - open source - ищет новых разработчиков

Screjet

Новичок
Это, вобщем, идея добавить усовершенствования в язык ПХП,
на предмет локализации контекстов.

Потенциальный пример:
PHP:
// пример 1: локализация контекстов

// начало a.inc.php {
class a {
}
// } конец file a.inc.php

class b {

	function __construct(){
		require_once "a.inc.php"; // класс а объявляем в контексте класса b
		$a = new a();
	}
}

$a = new a(); //ошибка. Класс а не объявлен в глобальном контексте

// пример 2: альтернативный синтаксис

class b {

	class a {
	}

	function __construct(){
		$a = new a(); //ОК, класс а объявлен в контексте класса
	}
}

$a = new a(); //ошибка. Класс а не объявлен в глобальном контексте
$a = new b::a(); //работает, но делать так глупо, т.к. класс а локальный для контекста класса b
 

pachanga

Новичок
Автор оригинала: Screjet
PHP:
$a = new b::a(); //работает, но делать так глупо, т.к. класс а локальный для контекста класса b
По сути, это и есть некоторая реализация namespace(где namespace'ом является класс)

Кстати, этого порой очень не хватает для тестирования, вот пример:

PHP:
//сейчас приходится давать моковым 
//классам длинные имена с префиксами контекста, 
//что бы не произошло коллизий классов 
//при выполнении всего набора тестов

Mock :: generatePartial('SQLBasedDAO',                       
'SQLBasedDAOOneTableObjectsCriteriaTestVersion',
                        array('_initSQL')); //генерит класс частичного мока на лету

class OneTableObjectsCriteriaTest extends LimbTestCase {
  function setUp() {
    $this->dao = new SQLBasedDAOOneTableObjectsCriteriaTestVersion($this);
[...]
Такие длинные имена крайне затрудняют читабельность тестов,
а могло бы быть так:
PHP:
class OneTableObjectsCriteriaTest extends LimbTestCase{
  
  Mock :: generatePartial('SQLBasedDAO',                    
'DAOMock', array('_initSQL')); //локальное объявление внутри класса

  function setUp() {
    $this->dao = new DAOMock($this);
[...]
эээх....
 

Screjet

Новичок
Жаль такую фишку нельзя реализовать простым модом: нужно менять структуру класса :(.

А чего сокращения не используете?
типа OneTableObjCritTest
или не разработаете систему аббравиатур?

Думаю, имя должно состоять максимум из двух частей. Гдето читал, что человек воспринимает только начало и конец слова.
 

pachanga

Новичок
Автор оригинала: Screjet
А чего сокращения не используете?
типа OneTableObjCritTest
или не разработаете систему аббравиатур?
Пробовали, но здесь проблема в том, что когда очень много файлов, и надо, скажем, поменять название класса мы пользуемся пакетным изменением по всем файлам.

Помнить о всех сокращениях совершенно никакой памяти не хватит, и поэтому может получиться так, что оригинальный класс уже называется по-другому, а аббревиатура этого не отражает, что крайне путает :(

-~{}~ 03.06.05 14:27:

Автор оригинала: Screjet
Думаю, имя должно состоять максимум из двух частей.
Не всегда получается так сделать, к сожалению. Вообще название должно четко отражать роль класса, поэтому мы не скупимся на длинные имена(там где это действительно нужно)
 

Screjet

Новичок
Нет, всмысле ключевых/распространненных сокращений, типа:
Obj => Object
Ts => Test|Task (зависит от контекста)
T => Type
Tm => Time

и, имхо, грех не сокращать распространенные составные названия, типа
Fw => FrameWork

Еще, думаю, такие длинючие имена нужно разделять не регистром, а пробелом, типа:
OneTableObjectsCriteriaTest => One_Table_Objects_Criteria_Test,
или еще лучше группировать, типа
OneTableObjects_CriteriaTest
Думаю, для восприятия лучше будет.
 

pachanga

Новичок
Как я тебе говорил, проблема возникает тогда, когда надо массово изменить название класса во многих файлах.

Вот смотри, допустим класс называется FooBar, соответственно мок на него называется SomeTestFooBarMock. Теперь нам надо сменить название FooBar класса на BarFoo, для этого мы просто запускаем пакетную обработку по исходникам и соответсвенно изменяются также все тестовые моки, т.к. там у них общая часть. В случае же аббревиатур, такое не сработает, т.е останутся устаревшие названия, что не есть хорошо.

Поверь, когда больше 10.000 строк кода, менять что-то вручную, ой, как тяжко....
 

neko

tеam neko
pachanga
Учитывая не только твой пессимистический настрой насчет будущего PHP, я всего лишь предположил, что, возможно, ты полагаешь, что выпуск PHP5 является для Zend в большей степени маркетинговым ходом.
нет, у меня нет никакого пессимизма.
просто такое личное отношение к языку и его имплементации.
но он настолько популярен, особенно в паре с "мистером мускулом", что никуда просто так не денется, даже если и особенно если останется в таком виде в каком он есть.

Я слышал такое мнение уже не раз и мне хотелось бы услышать, что ты думаешь по этому поводу. Это был всего лишь вопрос.
мне кажется смерть пхп могу пророчить только люди которые непонимают откуда растет его популярность...

Все здесь понимают, что платформа - "говно в плане enterprise level solutions."
энтерпрайзы эти, это пустые слова.
черт побери, даже DoD использует php!

И с выходом PHP5 каких-то поистине фундаментальных изменений не произошло, однако, судя по рекламным лозунгам Zend, они считают по-другому.
помоему произошло.
spl например это довольно приличное движение.
 

[sid]

Новичок
Автор оригинала: fixxxer
а из ниши easy-to-study языка для непрофессионалов php вряд ли когда выйдет, ибо ее он вполне успешно занимает.
Я думаю, что некорректно делить языки программирования на проффесиональные и непрофессиональные. Корректней было бы их делить по предназначению: general-purpose etc. Все остальное зависит от так называемого, злополучного, драйвера рук.
Как сказал один из проффесоров ДВО РАН (Дальневосточное Отделение Российской Академии Наук): "Сайты это уже не объявления на заборах, а полноценные приложения, которые требут проффесионализма и оригинальности подхода к своей архитектуре". Учитывая пробемы данной отрасли, про оригинальность архитектуры это он в точку попал!

-~{}~ 04.06.05 13:05:

Автор оригинала: pachanga
По сути, это и есть некоторая реализация namespace(где namespace'ом является класс)
Насколько я понимаю, такой namespace нельзя разнести скажем по двум файлам, так как нельзя определить два класа с одинаковым именем. Так что, смысла в этих namespace'ах я не вижу!
 

fixxxer

К.О.
Партнер клуба
Я думаю, что некорректно делить языки программирования на проффесиональные и непрофессиональные. Корректней было бы их делить по предназначению: general-purpose etc. Все остальное зависит от так называемого, злополучного, драйвера рук.
Языки программирования, может, и некорректно, но
позиционирование пхп именно такое.

По крайней мере, такие идиотские фичи, как magic quotes и url fopen wrappers, заставляют так думать.

А так то я сам использую php в крупных проектах, но, честно говоря, с бОльшим удовольствием пользовал бы c# - вот только mod_mono когда до ума доведут...
 

[sid]

Новичок
Автор оригинала: fixxxer
Языки программирования, может, и некорректно, но
позиционирование пхп именно такое.

По крайней мере, такие идиотские фичи, как magic quotes и url fopen wrappers, заставляют так думать.

А так то я сам использую php в крупных проектах, но, честно говоря, с бОльшим удовольствием пользовал бы c# - вот только mod_mono когда до ума доведут...
Я считаю, что такие вещи как magic_quotes нельзя считать "примочками" для дураков. Это "шлюз последней надежды", который никогда лишним не бывает. В конце концов, даже тот же перл имеет подобные механизмы.
 

pachanga

Новичок
Автор оригинала: [sid]
Насколько я понимаю, такой namespace нельзя разнести скажем по двум файлам, так как нельзя определить два класа с одинаковым именем. Так что, смысла в этих namespace'ах я не вижу!
Да, разнести по двум файлам нельзя, но этого и не нужно. Посмотри пример с тестом выше, мне, кажется, там достаточно хорошо показана польза от такого namespace(на самом деле, по-моему, это называется inline class)

-~{}~ 04.06.05 19:04:

Кстати, для тех, кто ждет LIMB 3.0, должно быть интересно:
новый релиз демо проекта на основе LIMB 3.0-alpha2, который можно скачать с SourceForge.

Подробнее о релизе на русском языке можно прочитать в wiki.
 

syfisher

TDD infected!!
Обновил почти всю документацию, касающуюся нового релиза.

Просьба всем, кто будет изучать Limb 3.0 более или менее серьзно: пишите ваши замечания по поводу документации в форум проекта или же сюда. Если что-то непонятно - пишите, будет улучшать документацию вместе. Пишите в любой форме, можно типа так: "мне непонятно, как там у вас передаются данные...". В общем жалуйтесь не стесняйтесь.

Могу еще сказать, что мы практически согласились задокументировать код ядра phpDocumentor-ом (сделаем как только появится свободное время). 1 : 0 в пользу lovchy :). Описывать в документации API - это ужас, а без него многим будет сложновато.
 

[sid]

Новичок
Ребята я не успеваю документацию выкачивать :). Слушайте может вы, просто опубликуете ссылку на архив с txt-шниками wiki. Я просто на своей системе их импортирую и буду просматривать! Как считаете?
 

pachanga

Новичок
Естественно идея хорошая :)

Мы уже думаем над этим....постараемся в ближайшее время(в течение 2-х недель) сделать автоматическую оффлайновую документацию.
 

syfisher

TDD infected!!
Автор оригинала: [sid]
Ребята я не успеваю документацию выкачивать :). Слушайте может вы, просто опубликуете ссылку на архив с txt-шниками wiki. Я просто на своей системе их импортирую и буду просматривать! Как считаете?
http://limb-project.com/wiki/wiki.tgz - архив обновляется каждый день. Включает /wiki/docs и /wiki/media для docuwiki.
 

pachanga

Новичок
Да, пока будет просто архив от dokuwiki, позже постараемся сделать и html архив...
 

[sid]

Новичок
syfisher Качал полтора метра. Удивляясь размеру архива. Оказалось что папочку .cache вы из архива не удалили :)! А зря. Архив в два раза меньше был бы. А DocuWiki все равно его воссоздаст!
 

Royal Flash

-=MaestrO=-
Скачал, limb-2.3.1.zip - 1,7 Mb. Разархивировал... Вот только как запустить - не знаю... Да и первое, что бросилось в глаза - в корне лежит .htaccess, в котором написано: Deny from all... Хоть бы какая-то инструкция была, что-ли? :)
 

pachanga

Новичок
Ну во-первых, просто скачать LIMB и пробовать его тут же "посмотреть" под браузером - не очень правильно. LIMB - не Mambo, требуется несколько больше телодвижений, которые потом окупаются с лихвой. LIMB - библиотека(framework) для построения CMS, это не готовая к употреблению CMS. Для того, чтобы увидеть LIMB(2.x) в действии, требуется некоторый проект, построенный на его основе.

Для того, чтобы новичкам было проще, мы поставляем демо проект, который является хорошим примером для ознакомления с системой.

Также существует "пустой проект"(empty project). Он предназначен для тех, кто уже строит проекты на основе LIMB с нуля. empty project обычно служит "скелетом" для любого нового LIMB проекта.

Все это добро можно найти на страничке download....

В каждом из LIMB проектов есть документация, как его правильно установить(см. файл Install в корне). Также есть довольно подробная информация по установке on-line.

-~{}~ 19.07.05 16:07:

Кстати, к разговору о namespace: http://news.php.net/php.internals/17304
 
Сверху