Daniel
Daniel

Reputation: 7172

Why did this work? ( php dot notation )

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() {
      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

Upvotes: 9

Views: 6246

Answers (2)

Ramiro
Ramiro

Reputation: 1

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)

Upvotes: 0

Matthew Flaschen
Matthew Flaschen

Reputation: 284927

this and test are implicitly converted to strings, and . is the concatenation operator.

Upvotes: 24

Related Questions