编程语言
首页 > 编程语言> > php-以更少的代码使用Fluent接口

php-以更少的代码使用Fluent接口

作者:互联网

我如何减少这两行

$foo = new Bar();
$baz = $foo->methodOne('param')->methodTwo('param');

$baz = Bar::methodOne('param')->methodTwo('param');

我在Laravel中特别看到了它,它的代码易读.但是我坚持让它与一些自定义的Helper-Class一起使用.感觉就像混合静态非静态函数,这现在令人困惑…

解决方法:

Laravel通过以下方式做到这一点

在:供应商/ laravel /框架/ src / Illuminate /数据库/胶囊

/**
 * Dynamically pass methods to the default connection.
 *
 * @param  string  $method
 * @param  array   $parameters
 * @return mixed
 */
public static function __callStatic($method, $parameters)
{
    return call_user_func_array(array(static::connection(), $method), $parameters);
}

/**
 * Get a connection instance from the global manager.
 *
 * @param  string  $connection
 * @return \Illuminate\Database\Connection
 */
public static function connection($connection = null)
{
    return static::$instance->getConnection($connection);
}

PHPDOC开始:

__callStatic() is triggered when invoking inaccessible methods in a static context.

我认为您可以为您的课程简化此操作:

class Bar{
    public static function __callStatic($method, $parameters)
    {
        return call_user_func_array(array(new Bar(), $method), $parameters);
    }
    public function hello(){
      echo "hello";
    }
}

Bar::hello();

标签:fluent-interface,laravel,oop,php
来源: https://codeday.me/bug/20191029/1956986.html