I was writing some php code after a long sint doing ruby and I accidently wrote this:
[root@ip-10-160-47-98 test]# cat run.php
<?php
class MyTest {
public function run() {
开发者_JS百科 var_dump(this.test);
}
}
$object = new MyTest();
$object->run();
[root@ip-10-160-47-98 test]# php run.php
string(8) "thistest"
[root@ip-10-160-47-98 test]#
Now, this.test should have been $this->test, but the compiler was actually happy to let this run.
Does anyone know how (this.test) got converted into a string "thistest"?
Compiled and run on php 5.3.2 amazon instance ami-e32273a6 (CentOS 5.4)
-daniel
this
and test
are implicitly converted to strings, and .
is the concatenation operator.
php search for constant this and constant test, it doent find them so raise an Exception and convert this and test to 'this' and 'test' and joing them (dot is used to join strings)
精彩评论