[PATCH] Namespace Patch, Beta 1

itprog

Cruftsman
:)

Не знаю баг ли это, но у меня при старте PHP вываливается сообщение о том что pdo_mysql уже загружен, но это ладно. Во время тестов (тесты взял из исходника) иногда выскакивает это же сообщение (что pdo_mysql уже загружен), видимо PHP ребутится....(последние 10 минут работает без этого глюка)

-~{}~ 18.08.05 16:18:

И если быстро обновлять то пишет "int(1) int(1) int(2) string(14) "this is static", то ошибку Fatal error: An import was already done with the class1 alias in c:\www\tests\namespace_001.php on line 4
 

svetasmirnova

маленький монстрик
>вываливается сообщение о том что pdo_mysql у
Рабочий (не новый) php.ini в PATH? Смени директорию.
 

itprog

Cruftsman
svetasmirnova
Я старую папку забакапил и заменил в ней все файлы на новые (те же пути), но пофиг на эту либу, суть в том что ошибка вылетала (около 4 раз) во время тестов.

Опять вывалилось, а всего лишь зажал F5 на минуту
 

svetasmirnova

маленький монстрик
itprog
тем не менее старый php.ini может в system32 лежать

-~{}~ 18.08.05 16:53:

ошибку (не с pdo) Jessie
 

itprog

Cruftsman
Похоже память не освобождается, уже 51 016 кб ест процесс, и растет при запуске одного из теста.

За минуту нажатия F5 используемая память выросла до 56 436 кб

Эх, писать ему лень :)

Хм, только что ошибка об pdo_mysql сама по себе выскочила, скорее всего su1d чего-то накривил.

-~{}~ 18.08.05 17:07:

Пока пил кофе тут уже apache.exe грохнулся (Apache.exe - обнаружена ошибка...)
 

svetasmirnova

маленький монстрик
да

-~{}~ 18.08.05 23:04:

itprog
>Эх, писать ему лень
Зачем тогда тестишь?
>скорее всего su1d чего-то накривил
Ещё раз посторяю: su1d ничего не накривил
 

itprog

Cruftsman
svetasmirnova
Могу и не тестить. Писать лень потому что и ничего писать пока. Не понятно что глючит.

Ещё раз посторяю: su1d ничего не накривил
Apache в спокойном состоянии падает (php установлен как модуль). Ладно, завтра все переставлю.

Кстати , tony2001 писал что в исходниках тысячи примеров, а где именно? Я там всего нашел 10 штук макс.
 

svetasmirnova

маленький монстрик
Ты тесть ;) Пиши только. В письмах Jessie. Но не тысячи, конечно. Немного. Возможно tony2001 имел в виду предыдущие proposals (а они были)
tony2001?
 

tony2001

TeaM PHPClub
>Кстати , tony2001 писал что в исходниках тысячи примеров, а где именно?
>Я там всего нашел 10 штук макс.

я такое точно говорил?
что-то я сомневаюсь в этом.
 

demongloom

Новичок
А можно некую предварительную документацию по неймспейсам найти?

А так же в какую версию пхп их всключат если все беты пройдут успешно в ближайшие пару месяцев?

Также читая internals я наткнулся на пару непоняток.

1. Что будет с функциями в namespaces? Будут или не будут?

-~{}~ 20.08.05 04:52:

Мдя.

Такую вещь желательно бы пофиксить.

class test {
function import() {
}
}

Parse error: syntax error, unexpected T_IMPORT, expecting T_STRING in E:\Develop\wwwroot\dphp\index.php on line 16
 

itprog

Cruftsman
demongloom
Такую вещь желательно бы пофиксить.
Это не баг, "import" зарезервированое слово.
Такая же ошибка будет при:
class test {
function include() {
}
}

или при:
class test {
function print() {
}
}
 

demongloom

Новичок
Код:
namespace test {
		
		class wow {
			function nah() {
				echo "wow nah!";
			}
		}
		
	}
	
	namespace test2 {
		
		interface a {
			function wow();
		}
		
		class abc extends test2:wow implements test2:a {
			
			function wow() {
				
				echo "wow";
				
			}
			
		}
	
		class wow extends test:wow {
		}
		
	}
	
	$a = new test2:abc;
	
	var_dump($a);
	
	$a->nah();
	$a->wow();

/*
object(test2:abc)#1 (0) { } wow nah!wow
*/
Гы. Прикольно.

1. Только отсутствие функций это плохо.
2. Есть ли какое нибудь сокращение или имя для замены class abc extends test2:wow implements test2:a на class abc extends __NAMESPACE__:wow или self:wow?

-~{}~ 20.08.05 05:04:

Автор оригинала: itprog
demongloom

Это не баг, "import" зарезервированое слово.
Такая же ошибка будет при:
class test {
function include() {
}
}

или при:
class test {
function print() {
}
}
У меня просто в фреймворке функция для загрузки модулей import называется. Надо будет теперь переименовывать везде.
 

svetasmirnova

маленький монстрик
>Что будет с функциями в namespaces? Будут или не будут?
Насколько я понимаю: нет
>А так же в какую версию пхп их всключат если все беты пройдут успешно в ближайшие пару месяцев?
Об этом речи пока не идёт, к сожалению. Боюсь, даже не в 6.0
(Т.е. некоторые люди хотят, чтобы уже в 6.0 Но их даже не большинство, по-моему)
>А можно некую предварительную документацию по неймспейсам найти?
Только переписк в internals, насколько я понимаю. Примеры в письмах Jessie

Константа __NAMESPACE__ есть
 

su1d

Старожил PHPClubа
не думаю, что это -- хорошая идея: тестировать на 5.х

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

одно разве что только неплохо: разработчики кажется осознали необходимость пространств имён. особенно после скандала с классом Date.
 

Ilya Bous

Новичок
Автор оригинала: su1d
не думаю, что это -- хорошая идея: тестировать на 5.х

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

одно разве что только неплохо: разработчики кажется осознали необходимость пространств имён. особенно после скандала с классом Date.
Это еще вопрос войдут ли 6.0. Исходя из

http://www.php.net/~derick/meeting-notes.html#name-spaces
Conclusions:

If we're going to do this, the name spaces look like above.
Marcus is going to provide a patch.

Ну и это впечатляет: The suggested separator is "\" as this is the only free choice

Вот только вопрос: каким образом поддержка юникода может повлиять на механизм неймспейсов?
 

su1d

Старожил PHPClubа
Internally this adds <namespace-name> to the class names defined inside it separated by a separator. The following example would create the class "spl<separator>file".
The suggested separator is "\"
INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY! INTERNALLY!


например, в ЗендДвижке классы с обычными именами и с юникодными хранятся в разных массивах...
наверное рано или поздно всё перенесётся в юникод, но вроде как ещё не скоро.
 
Сверху