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