我发现在类中编写PHP代码可能会变得相当长:
$this->parser->parse_syntax($this->get_language_path($this->language),
$this->elements,
$this->regex);
例如,在Java中,类实例可以通过名称调用其方法而不引用 this ,是否有一种方法可以在PHP中实现更短的代码,而不必每次都必须阅读值?
答案 0 :(得分:4)
不,在PHP中,如果要从对象内部运行对象的方法或读/写属性,则必须编写$this
来引用该对象实例。
PS。您可以在每个方法的开头执行以下操作:$s = $this
然后使用$s
,但是强烈推荐,您不应该这样做如果你忘了你读过这段话,那将是最好的。)
答案 1 :(得分:3)
我认为这完全取决于您的数据结构,例如,如果传递null,则parse_syntax()
方法可以默认为$this->elements
和$this->regex
:
class foo
{
public $parser = null;
public $language = null;
public $elements = null;
public $regex = null;
public function __construct()
{
$this->parser = new parser();
}
public function get_language_path($language = null)
{
$language = (isset($language)) ? $language : $this->language;
// your code here
}
}
class parser extends foo
{
public function parse_syntax($path = null, $elements = null, $regex = null)
{
$path = (isset($path)) ? $path : parent::get_language_path();
$elements = (isset($elements)) ? $elements : $this->elements;
$regex = (isset($regex)) ? $regex : $this->regex;
// your code here
}
}
答案 2 :(得分:1)
是的,Java并不总是需要这个,它也不需要变量前面的$,而你只使用一个点(。)代替 - >引用对象的变量。
但是Python仍然比Java短 - 你不需要在Python中使用大括号,然后使用Python。 Scala也比Java短得多,所以如果你真的需要编写更少的代码,那么php不是最好的选择。
查看Python或Scala