使PHP代码更短

时间:2011-02-20 11:30:37

标签: php

我发现在类中编写PHP代码可能会变得相当长:

$this->parser->parse_syntax($this->get_language_path($this->language),
                                    $this->elements,
                                    $this->regex);

例如,在Java中,类实例可以通过名称调用其方法而不引用 this ,是否有一种方法可以在PHP中实现更短的代码,而不必每次都必须阅读值?

3 个答案:

答案 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