Это не ошибка, а фича =) Цитирую: "Метод объявления переменной через ключевое слово var, принятый в PHP 4, до сих пор поддерживается в целях совместимости (как синоним ключевого слова public)." Т.е. скрипт сам смотрит на версию php и для 4-й печатает var, для 5-й - public. Но ошибка(опечатка) в классах все-таки обнаружилась:дальше вместо VAR печатает PUBLIC в классах
Строка 2714:
Заменяем, согласно спецификации, на:
[/spoil]
Тем самым избавляемся от неправильного отображения наследуемого родительского метода/свойства private:
[spoil] Пример, где проявлялась эта ошибка:
До фикса:
После фикса:
[/spoil]
Upd: Чтобы после этого закрывающая скобка не съезжала вправо надо сделать еще такой фикс. Приложил обновленный файл.
[spoil]
Строки 2507-2553
Переносим отступ строки:
PHP:
define('ZEND_ACC_SHADOW', 0x2000);
PHP:
define('ZEND_ACC_SHADOW', 0x20000);
Тем самым избавляемся от неправильного отображения наследуемого родительского метода/свойства private:
[spoil] Пример, где проявлялась эта ошибка:
PHP:
<?php
class MyClass {
public $public = 'Общий';
protected $protected = 'Защищенный';
private $private = 'Закрытый';
}
class MyClass2 extends MyClass {
// Мы можем переопределить public и protected методы, но не private
protected $protected = 'Защищенный2';
}
?>
PHP:
<?php
class MyClass
{
public $public = 'Общий';
protected $protected = 'Защищенный';
private $private = 'Закрытый';
}
class MyClass2 extends MyClass
{
protected $protected = 'Защищенный2';
public $public = 'Общий';
$private;
}
?>
PHP:
<?php
class MyClass
{
public $public = 'Общий';
protected $protected = 'Защищенный';
private $private = 'Закрытый';
}
class MyClass2 extends MyClass
{
protected $protected = 'Защищенный2';
public $public = 'Общий';
}
?>
Upd: Чтобы после этого закрывающая скобка не съезжала вправо надо сделать еще такой фикс. Приложил обновленный файл.
[spoil]
Строки 2507-2553
PHP:
echo $newindent;
$static = false;
if (isset($info)) {
if ($info['flags'] & ZEND_ACC_STATIC) {
$static = true;
}
}
else if (isset($class['default_static_members'][$name])) {
$static = true;
}
if ($static) {
echo "static ";
}
$mangled = false;
if (!ZEND_ENGINE_2) {
echo 'var ';
}
else if (!isset($info)) {
echo 'public ';
}
else {
if ($info['flags'] & ZEND_ACC_SHADOW) {
continue;
}
switch ($info['flags'] & ZEND_ACC_PPP_MASK) {
PHP:
$static = false;
if (isset($info)) {
if ($info['flags'] & ZEND_ACC_STATIC) {
$static = true;
}
}
else if (isset($class['default_static_members'][$name])) {
$static = true;
}
if ($static) {
echo $newindent."static ";
}
$mangled = false;
if (!ZEND_ENGINE_2) {
echo $newindent.'var ';
}
else if (!isset($info)) {
echo $newindent.'public ';
}
else {
if ($info['flags'] & ZEND_ACC_SHADOW) {
continue;
}
echo $newindent;
switch ($info['flags'] & ZEND_ACC_PPP_MASK) {