Am 11.03.2015 um 17:21 schrieb Rowan Collins:

> 
> My reasoning is that code that is ambiguous is hard to read. If "$foo"
> can mean either "a local variable called $foo" or "a property of the
> current object called $foo", then you have to know which it is in order
> to understand what code is doing.

So for clean code rules you should do smaller methods if you can't even
see clearly whether you declared $foo locally or not.

> 
> This is not about "a strict OOP-world", incidentally, it's about scoping
> rules. Java imports object properties into the scope of each method, PHP
> does not. Even if properties had to be declared (which is probably a
> good idea), local variables still wouldn't be - in Java, the fact that
> it's not declared locally means it *must* be coming from somewhere else.
>

No if it is not declared locally it doesn't mean it's coming from
somewhere else, but it means it is coming from one of the next higher
scopes which is normally the Object.

> I also know that when I was first learning Java at school, it confused
> me immensely which variables I was allowed to access in static contexts.
> In PHP, that's simple - if you can't access $this, you can't access any
> of it's properties.
> 

I'm not talking about beginners code, but about professional clean code.
If you're doing as a beginner you can still use the $this keyword to
make it clearer code for you to understand. But if you want to do huge
applications you should have understand the difference between static
and non-static context. And if it would be defined well in PHP, modern
IDEs should be able to help you to do no mistakes.

> 
> This is true of any object variable.
> 
> These resolve the scope of the property/method to the variable $foo:
> 
> $a = $foo->a;
> $foo->some_function(...);
> 
> These resolve the scope of the property/method to the variable $this:
> 
> $a = $this->a;
> $this->some_function(...);
> 

Okay I agree with this point.

> If you want to resolve the scope of a method to the current object
> without using the variable $this, you can also use the "static" keyword;
> these are equivalent:
> 
> $this->some_function(...);
> static::some_function(...);
> // http://3v4l.org/E0XYs

I don't care whether I use $this-> or static:: as keyword. In this case
I would even prefer $this-> because static in instance context is in my
opinion really confusing.

> 
> There is nothing unvariable-like about $this, so if variables begin with
> $, $this should begin with $.
> 
> Regards,

Regards

-- 
DerOetzi

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to