Jan 30

Излезе PHP 5.3.0 beta 1 Johannes Schlüter обяви това вчера във php.internals чрез съобщение, което може да се намери тук:

php.internals: PHP 5.3.0beta1

Най-голямата промяна е че вече няма да има OOP в closures, като повече информация имат тук по въпроса. Другото важно нещо е че PHP5.3.0 е feature freeze фаза, т.е. няма да има промени, касаещи синтаксиса и функциолността на езика, а само bug fixes.

Колкото и да съм доволен от това че PHP 5.3 наближава, не мога да скиря и разочарованието си от основното нещо което се чакаше в PHP – namespaces. Или по-точно техния разделител, който в момента мога с ръка на сърцето да кажа че не струва. Cпоред мен това е най-голямата дизайнерска грешка в целия език и породи много дискусии и висички бяха на едно мнение че това не струва. Поне за мен предишния разделител се вписваше идеялно и даже в документацията си към проектите така си описвам класоветe Package1::Package2::Class ( при истинско име на клас Package1_Package2_Class)

// преди, се мислеше да е така, красиво нормлано
Package1::Package2::Class::saticMethod()

// сега вече е
Package1\Package2\Class::StaticMethod()

// удря малко на
// C:\foo\bar\baz

// а това е валиден, грозен код
PHP\Namespaces::$separator->sucks();

Разбирам защо е решено да се смени ::, заради конфликта с статичните методи, но все пак, е можело да се направи да се хвърлят E_ERROR при конфликт. И то май доста ще се използва “use” ключовата дума зада избягвам да ползвам сепаратора.

Но няма как такъв е живота и той продължава , добре че има и други езици :) / :(

3 коментара за "PHP 5.3 beta 1"

  1. Калоян К. Цветков каза:

    Тази работа с уикито е малко лицемерна — само и само за да “докажат”, че са направили правилното решение. Аз съм с двете ръце за :::

  2. Калоян К. Цветков каза:

    # // сега вече е
    # Package1/Package2/Class::StaticMethod()

    Май не е точно така — май е с обратната наклонена ;)

  3. Radoslav Stankov каза:

    Ами то не мисля че успяха да убедят някой че са взели правилното решение. Аз бях за ::, но и ::: е щеше да е добро решение. Но са решили, че много хора ще се бъркат и е дълго за писане, но пък не е толкова грозно колкото \ :(

    п.п. За Package1/Package2/Class::StaticMethod() си прав трябва да е Package1\Package2\Class::StaticMethod(), поправих го, просто съм свикнал да ползвам повече \ от колкото / :)

Какво мислите по въпроса