Profic
just Profic (PHP5 BetaTeam)
[php5] interface arrayAccess и reference
PHP 5.0.0-dev (cli) (built: Jun 28 2004 16:29:27) with Xdebug v2.0.0dev, by Derick Rethans
на таком коде
выдает
Я понимаю, что эта ошибка означает, но там имхо не хватает в перечислении еще и "assign by reference"
misc
но когда я добавляю в строке (1) перед offsetGet & и ключаю E_STRICT, то получаю сообщение Only variable references should be returned by reference
ситуацию не спасает даже return $temp = NULL; все равно кричит, что константу возвращаю
Ааа. Про return $temp = NULL; я понял
Ведь и так константа-то получается 
На этот раздел внимания не обращайте
Тони
Я чего-то не понял или некоторые ошибки из класса E_STRICT мигрировали в E_ERROR?
Как минимум одна перечисленная тобой в http://phpclub.ru/talk/showthread.php?postid=345691#post345691
а именно
Declaration of %s::%s() should be compatible with that of %s::%s()
у меня возникает когда декларация метода в классе реализующем интерфейс отличается от описания этого метода в интерфейсе.
ЗЫЫ. Кстати а Дерик знает, что его xdebug-2.0.0-dev начиная с виндового билда от прошлого понедельника падает при завершении работы php. Связано это видимо с изменениями с EMPTY_STRING
-~{}~ 26.07.04 18:26:
Кстати не знаю как сейчас, но reflection api кидает exception если метод класса объявлен с использованием ключевого слова self (или parent - не уверен), с сообщением, что не знает такого класса
-~{}~ 26.07.04 18:29:
пример забыл
PHP 5.0.0-dev (cli) (built: Jun 28 2004 16:29:27) with Xdebug v2.0.0dev, by Derick Rethans
на таком коде
PHP:
<?php
class arr implements arrayAccess {
public $a = array ();
public function offsetExists ($offset) {
echo 'Checking existens of offset ' . $offset . '<br>';
return array_key_exists ($offset, $this->a);
}
public function offsetGet ($offset) { // (1)
echo 'Getting offset ' . $offset . '<br>';
if (isset ($this->a[$offset])) {
return $this->a[$offset];
} else {
return NULL;
}
}
public function offsetSet ($offset, $value) {
if (!is_string ($offset) && !is_int ($offset) && $offset !== NULL) {
throw new Exception ('"' . $offset . '" (' . getType ($offset) . '): offset is not int');
return false;
}
if ($offset === NULL) {
if (sizeof ($this->a)) {
$last = (int) max (array_keys ($this->a));
$offset = $last > 0 || array_key_exists ($last, $this->a) ? ++$last : 0;
} else {
$offset = 0;
}
}
echo 'Setting offset ' . $offset . '<br>';
$this->a[$offset] = $value;
return false;
}
public function offsetUnset ($offset) {
echo 'Unsetting offset ' . $offset . '<br>';
unset ($this->a[$offset]);
return false;
}
}
try {
$o = new arr ();
$o['a'] = 'a';
$var = &$o['a']; // (2)
var_dump ($o);
} catch (Exception $e) {
echo nl2br ($e->__toString ());
}
?>
"line 80" это, что в исходнике пемечено (2)Setting offset a
Getting offset a
Fatal error: Objects used as arrays in post/pre increment/decrement must return values by reference in ...\test.parser.php on line 80
Я понимаю, что эта ошибка означает, но там имхо не хватает в перечислении еще и "assign by reference"
misc
но когда я добавляю в строке (1) перед offsetGet & и ключаю E_STRICT, то получаю сообщение Only variable references should be returned by reference
ситуацию не спасает даже return $temp = NULL; все равно кричит, что константу возвращаю
Ааа. Про return $temp = NULL; я понял


На этот раздел внимания не обращайте

Тони
Я чего-то не понял или некоторые ошибки из класса E_STRICT мигрировали в E_ERROR?
Как минимум одна перечисленная тобой в http://phpclub.ru/talk/showthread.php?postid=345691#post345691
а именно
Declaration of %s::%s() should be compatible with that of %s::%s()
у меня возникает когда декларация метода в классе реализующем интерфейс отличается от описания этого метода в интерфейсе.
ЗЫЫ. Кстати а Дерик знает, что его xdebug-2.0.0-dev начиная с виндового билда от прошлого понедельника падает при завершении работы php. Связано это видимо с изменениями с EMPTY_STRING
-~{}~ 26.07.04 18:26:
Кстати не знаю как сейчас, но reflection api кидает exception если метод класса объявлен с использованием ключевого слова self (или parent - не уверен), с сообщением, что не знает такого класса
-~{}~ 26.07.04 18:29:
пример забыл

PHP:
class test {
public function tes2 (self $var);
}