Вышла альфа-версия PHP4+Zend Engine 2 (4.3.0-dev)

Вы ждете Zend Engine 2?

  • Да! Давно пора

    Голосов: 11 64,7%
  • Он мне ненужен в текщих проектах

    Голосов: 5 29,4%
  • Нет

    Голосов: 1 5,9%
  • А что это такое?

    Голосов: 0 0,0%

  • Всего проголосовало
    17
  • Опрос закрыт .

confguru

ExAdmin
Команда форума
Вышла альфа-версия PHP4+Zend Engine 2 (4.3.0-dev)

Вышла альфа-версия PHP4+Zend Engine 2 (4.3.0-dev)
Скачать можно здесь
http://www.php.net/distributions/php-4.3.0-dev-zend2-alpha1.tar.gz

Она основана на PHP 4 CVS (4.3.0-dev) и включает в себя Zend2 (object model, adds exception handling and provides a much better infrastructure for the integration of external technologies like Java or .NET)

ЭТО ТОЛЬКО АЛЬФА ВЕРСИЯ - не используете ее только для тестирования !!!

Для Windows [4,396Kb].
http://www.php.net/do_download.php?download_file=php-4.3.0-dev-zend2-win32-alpha1.zip

Примеры тут;
http://www.php.net/source.php?url=/zend2_example.php
 

lyonchik

Guest
Отлично! Будем тестить. Особенно приятные фичи - это namespaces, private members, exceptions, ну и производительность вроде должна вырасти...
 

lyonchik

Guest
Ну вообще-то это только альфа версия, и если определенное количество людей будут настаивать на том, чтобы были добавлены еще некоторые фичи, то это может случиться. Главное, не сидеть в стороне. То, каким будет ПХП завтра, зависит и от нас с вами...
 

[VS]

Guest
в С++ их тоже нет. их необходимость - очень спорная тема.
 

dr.vint

Guest
ИМХО очень полезная штука

куда надо писать что бы они их сделали ?
 

Tard

Guest
Zend 2.0

Если честно, то я сильно разочарован ZE 2.0
По-моему они еще больше запутали и объектную модель и неймспейсы. Если раньше все было предельно просто (или попросту не было) - то теперь каша какая-то.

- private members - из чейнджлога следует что private могут быть только переменные, но не методы.

- static переменные
- $a->b()->c();
- это только приветствуется

А вот с неймспейсами - там какой-то бред получается. Уж лучше бы они их не делали вообще :(.

- Под пространством имен они подразумевают 'класс внутри класса'. И предлагают определять их таким способом (примеры в changelog): class DB::Oracle() {...} etc. и создавать экземпляры $a = DB::Orcale(). Как тогда, читая код можно определить, что делает DB::Oracle()? создает экземпляр DB::Oracle() или вызывает метод Oracle() в классе DB?

class FooClass {
function foo() {
$this->bar();
bar();
}

function bar() {
print "foobar\n";
}
}

этот шедевр напечатает 'foobar' два раза, т.к. bar() находится в пространстве имен класса :[ ] т.е. методы можно вызывать без $this??? как тогда определить вызывается метод или глбальная функция???

так импортирование
import class * from MyOuterClass;
ну это ладно

import function func2 from MyOuterClass::MyInnerClass;
а вот тут они, попытались наверное сделать что-то типа множественного наследования Mix-In класса. синтаксис очень похож на яву или питон, но там принцип разделения на модули / packages другой.


define('foo', 'bar');

class FooClass {
const foo = 'foobar';

function printFoo() {
print foo;
}
}

А в этом случае напечатается foobar. А как тогда поиметь доступ к глобальным константам???

Резюме: не знаю как вы, а я сильно разочарован. ИМХО кодировать станет может быть и проще, но количество трудноуловимых ошибок возрастет, а читабельность чужого кода снизится на порядок. Чуствуется какая-то непоследовательность во внесении изменений. А namespacing вообще brain damaged :(
 

AnToXa

prodigy-одаренный ребенок
а я вота еще прикол нашел с этими private переменными (кстати константы нельзя сделать private)

PHP:
<?php
error_reporting (E_ALL);

define('foo', 'bar');

class FooClass {
	private $foo = 'foobar';
	
	function printFoo() {
		print $foo;
	}
}

$t = new FooClass;
$t->printFoo ();
$t->foo = "hehe";
echo $t->foo;

?>
оно сначала ругнется на неопределнную переменую foo, а ПОТОМ ВЫВЕДЕТ 'hehe' !!

:((((((

т.е. получается, что private переменные исключаются из родительского пространства имен, но может быть там создана вновь!
 

AnToXa

prodigy-одаренный ребенок
а если сделать

function printFoo() {
print $this->foo; // тут было просто print $foo;
}

то не ругнется на неопред переменную даже.
 

webdeveloper

Guest
Порадовала возможность использовать exceptions но не совсем понятно как их объявлять.

PHP:
<?
    class MyException {
        function MyException($_error) {
            $this->error = $_error;    
        }
        
        function getException()
        {
            return $this->error;    
        }
    }
    
    function ThrowException()
    {
        throw new MyException("'This is an exception!'");    
    }
    
    
    try {
    } catch (MyException $exception) {
        print "There was an exception: " . $exception->getException();
        print "\n";
    }
    
    try {
        ThrowException();    
    } catch (MyException $exception) {
        print "There was an exception: " . $exception->getException();
        print "\n";
    }
    
?>
Насколько я поянл, нужно стначала подключить этот class MyException а потом его можно будет вызывать. Но ведь можно было бы сделать и встроенный class Exception. В конце концов, ведь не всегда же нужно создавать свой класс с Exceptions.
 

[VS]

Guest
Мне вообще кажется очень сомнительной целесообразность exceptions в PHP. Подозреваю что они тормозят на порядок выше, чем просто по человечески возвращать true/false из функции в зависимости от результата выполнения + если нужно выставления флага определяющего ошибку.
 

webdeveloper

Guest
Автор оригинала: [VS]
Мне вообще кажется очень сомнительной целесообразность exceptions в PHP. Подозреваю что они тормозят на порядок выше, чем просто по человечески возвращать true/false из функции в зависимости от результата выполнения + если нужно выставления флага определяющего ошибку.
Не, с ними очень удобно. Я когда на ASP писал, то всегда их использовал. Я из за этого на VBS не писал, атлько на JScript.

А то что они тормозят, может быть, ну ведь это пока еще не финальная версия. А тому в ремени когда они финальную версию выпустят, Интел может уже какой нито Pentium 5 сделает. Мое мнение таково, что в языках типа РНР самое главное это скорость разработки и простота и удобтсво для разработчика.

А космических скоростей от РНР я вообщем то и не ожидал никогда :)
 

webdeveloper

Guest
Только что прочитал:

The Zend Engine 2.0 introduces a standard way of declaring
constructor methods by calling them by the name __construct().

For backwards compatibility, if the Zend Engine 2.0 cannot find a __construct() function for a given class, it will search for the old-style constructor function, by the name of the class.

Effectively, it means that the only case that would have compatibility issues is if the class had a method named __construct() which was used for different semantics.

Блин, этоже все будет через ЖОПУ. Зачем они так сделали :confused:
 

webdeveloper

Guest
Автор оригинала: tony2001
а что, все бросить и переделать ?
а обратная совместимость ?
вот поэтому РНР так и остается детской игрушкой :mad:

если бы они хоть немного думали о том что они делают. а так ощущение что это какая то вечная бета :(
 

pachanga

Новичок
...а не детские игрушки это каждый раз bunch of features только без backward compatibility ?

И вообще давайте дождемся final release(ну бету дикую в конце-концов)! Zeev еще раз сто репу почешет и что-нибудь ладное выдаст!
 

kvn

programmer
Мужики, КАК вы его собрали???
Я пробовал у меня ругнулось на еррор в файле типа apache..что-то.c..и все..:(
Собирал сначала как SO (--with-apxs с кучей опций), потом плюнул начал просто --with-pgsql --with-xml и ВСЕ!
Причем как ЦГИ, а он все-равно ругнулся и послал make нафиг.
(Error code 1..)

FreeBSD-4.5R. Дистрибутив в php.net..
может попробовать с CVS стянуть..

Но вопрос остался - как вы его собирали?
Или здесь обсуждали binary version for Win...?
 

tony2001

TeaM PHPClub
2 webdeveloper:
>если бы они хоть немного думали о том что они делают. а так
>ощущение что это какая то вечная бета
извини, я не понимаю подобных рассуждений.
разговор о том, что надо развиваться постепенно, поддерживая хотя бы часть не очень старого кода.
и ничего плохого или удивительного я не вижу в цитате, которую ты привел.
я не думаю, что было бы лучше заставить всех срочно переписать все свои скрипты ("а мог бы и полоснуть!...").

>вот поэтому РНР так и остается детской игрушкой
аргументировать можешь ?
или только утверждать ?
тогда давай аргументы.
 

[VS]

Guest
Автор оригинала: webdeveloper

Не, с ними очень удобно. Я когда на ASP писал, то всегда их использовал. Я из за этого на VBS не писал, атлько на JScript.

А то что они тормозят, может быть, ну ведь это пока еще не финальная версия. А тому в ремени когда они финальную версию выпустят, Интел может уже какой нито Pentium 5
На С++ иногда их использую, но есть более красивые и стабильные подходы к обработке ошибок. На Java приходится их использовать из-за идеологии языка, это порой очень не удобно.

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