Недокументированный PHP

Решил собрать все недокументированные конструкции и возможности языка PHP, которые я знаю, в одном месте.

Переменные с числовым именем
$var = '123';
$$var = 'test';

var_dump(get_defined_vars());
Команда list для строк (работает не во всех версиях PHP)
list($a, $b) = 'HI';

echo $a, $b;
Доступ к приватным свойствам через массив
class smth
{
     private $prop = 'test';
}

$obj = new smth();
$arr = (array) $obj;
echo $arr["\0smth\0prop"];
arr[] в аргументах функции
function add(&$var)
{
    $var = 'element';
}

$arr = array();
add($arr[]);

var_dump($arr);
Может вы что-то ещё знаете?
28 июля 2009 17:27

besisland.livejournal.com (besisland.livejournal.com)
28 июля 2009, 19:12

Использовать недокументированные возможности не следует.

gaius-julius.livejournal.com (gaius-julius.livejournal.com)
28 июля 2009, 19:49

ну, последний трюк с $arr[] он, как я понимаю, не совсем недокументированный.

из документации же известно по-отдельности и про то как работает передача параметра по ссылке и что делает операция []...

gaius-julius.livejournal.com (gaius-julius.livejournal.com)
28 июля 2009, 19:50

там, кстати, ошибка. объявлена функция add(&$var), а вызывается test()

bolk (bolknote.ru)
28 июля 2009, 20:35, ответ предназначен besisland.livejournal.com:

Никто не говорит об использовании, это, скорее, курьёзы.

bolk (bolknote.ru)
28 июля 2009, 20:35, ответ предназначен gaius-julius.livejournal.com:

Документация говорит нам, что $arr[] для чтения недоступна, тут же это не так.

Спасибо, ошибку поправил.

siberex.livejournal.com (siberex.livejournal.com)
28 июля 2009, 22:11, ответ предназначен bolk (bolknote.ru):

Так мы её не читаем, мы в неё пишем :-)

bolk (bolknote.ru)
28 июля 2009, 22:24, ответ предназначен siberex.livejournal.com:

Никто не мешает прочитать :)

sharkman (sharkman.myopenid.com)
29 июля 2009, 05:22

Всё это есть в документации, читайте внимательно.

bolk (bolknote.ru)
29 июля 2009, 09:36, ответ предназначен sharkman (sharkman.myopenid.com):

Покажите.

bolk (bolknote.ru)
29 июля 2009, 09:39, ответ предназначен sharkman (sharkman.myopenid.com):

Давайте, например, list (http://ru2.php.net/list) посмотрим:
list — Assign variables as if they were an *array*
Note: list() *only* works on numerical *arrays* and assumes the numerical indices start at 0.

besisland.livejournal.com (besisland.livejournal.com)
29 июля 2009, 14:08, ответ предназначен bolk (bolknote.ru):

О функции list:
Assign variables _as if they were an array_

О типе string, раздел «String access and modification by character»:
_Think of a string as an array_ of characters for this purpose.

bolk (bolknote.ru)
30 июля 2009, 12:55, ответ предназначен besisland.livejournal.com:

Т.е. правильно ли я вас понял, что вы считаете, что эта запись как бы говорит нам, что строку можно считать массивом?

Тогда объясните мне почему sort не принимает строку и $str[] не работает? И зачем нужны две функции array_slice и substr?

bolk (bolknote.ru)
30 июля 2009, 12:56, ответ предназначен besisland.livejournal.com:

Ну и расскажите заодно почему в новых версиях PHP такое поведение list не работает.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)