Недокументированный 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);
Может вы что-то ещё знаете?
Использовать недокументированные возможности не следует.
ну, последний трюк с $arr[] он, как я понимаю, не совсем недокументированный.
из документации же известно по-отдельности и про то как работает передача параметра по ссылке и что делает операция []...
там, кстати, ошибка. объявлена функция add(&$var), а вызывается test()
Комментарий для besisland.livejournal.com:
Никто не говорит об использовании, это, скорее, курьёзы.
Комментарий для gaius-julius.livejournal.com:
Документация говорит нам, что $arr[] для чтения недоступна, тут же это не так.
Спасибо, ошибку поправил.
Комментарий для Евгения Степанищева:
Так мы её не читаем, мы в неё пишем :-)
Комментарий для siberex.livejournal.com:
Никто не мешает прочитать :)
Всё это есть в документации, читайте внимательно.
Комментарий для sharkman.myopenid.com:
Покажите.
Комментарий для sharkman.myopenid.com:
Давайте, например, list ( http://ru2.php.net/list ) посмотрим:
Комментарий для Евгения Степанищева:
О функции 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.
Комментарий для besisland.livejournal.com:
Т. е. правильно ли я вас понял, что вы считаете, что эта запись как бы говорит нам, что строку можно считать массивом?
Тогда объясните мне почему sort не принимает строку и $str[] не работает? И зачем нужны две функции array_slice и substr?
Комментарий для besisland.livejournal.com:
Ну и расскажите заодно почему в новых версиях PHP такое поведение list не работает.