Недокументированный 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);Может вы
Комментарии 13
из документации же известно
Документация говорит нам, что $arr[] для чтения недоступна, тут же это не так.
Спасибо, ошибку поправил.
Так мы её не читаем, мы в неё пишем
Давайте, например, 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.
Т.е. правильно ли я вас понял, что вы считаете, что эта запись как бы говорит нам, что строку можно считать массивом?
Тогда объясните мне почему sort не принимает строку и $str[] не работает? И зачем нужны две функции array_slice и substr?
Ну и расскажите заодно почему в новых версиях PHP такое поведение list не работает.