开发者

Making PHP code shorter

开发者 https://www.devze.com 2023-02-11 08:14 出处:网络
I have found that writing PHP code within classes can become rather long: $this->parser->parse_syntax($this->get_language_path($this->language),

I have found that writing PHP code within classes can become rather long:

$this->parser->parse_syntax($this->get_language_path($this->language),
                                    $this->elements,
                          开发者_Go百科          $this->regex);

For example, in Java a class instance can call its methods by name without referencing this, is there a way to achieve shorter code in PHP without using this and self every time you have to read a value?


No, in PHP if you want to run object's method or read/write property from inside of object you must write $this to refer that object instance.

PS. You can do at the beginning of each method something like this: $s = $this and use $s then, but it's strongly unrecommended, you shouldn't do that and it will be best, if you forget that you read this paragraph :)


I think it all comes down to your data structure, for instance your parse_syntax() method can default to $this->elements and $this->regex if null is passed instead:

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
    }
}


Yes, Java does not always need this, it also does not need the $ in front of variables, and you use just one dot (.) instead of -> to reference object's variable.

But Python is still shorter than Java - you don't need to use braces in Python, then use Python. Scala also much shorter than Java, so if you really need to write less code, then php is not the best choice.

Look into Python or Scala

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号