2013年11月8日星期五

Christian Weiske: PHP: Cannot access property started with '\o'


Christian Weiske had an interesting situation pop up in one of his applications around a call to a variable with an interesting name.



Some days ago I saw the following fatal error for the first time in my life:



Fatal error: Cannot access property started with '\o' in file.php



After some debugging, I found out that the source of the error was not some strange BOM or UTF-8 characters in PHP source code files. No, it was a combination of protected class properties, object-to-array casting and automatic template property mappings.




As it turns out, there was a change in how object-to-array casting was done in PHP 5.3 that made this break (related to things appended to private and protected variable names). He includes a bit of sample code to illustrate the problem - a simple class converted from object to array with direct casting. He does point out that it doesn't happen with get_object_vars, though, as that doesn't do the casting, just extraction.


Link: http://cweiske.de/tagebuch/php-property-started-nul.htm

没有评论:

发表评论