相关疑难解决方法(0)

PHP中的"内联"类实例化?(为了方便链接)

在Python和Ruby等OO语言中常用的习惯用法是实例化一个对象和链接方法,这些方法返回对象本身的引用,例如:

s = User.new.login.get_db_data.get_session_data
Run Code Online (Sandbox Code Playgroud)

在PHP中,可以像这样复制此行为:

$u = new User();
$s = $u->login()->get_db_data()->get_session_data();
Run Code Online (Sandbox Code Playgroud)

尝试以下结果syntax error, unexpected T_OBJECT_OPERATOR:

$s = new User()->login()->get_db_data()->get_session_data();
Run Code Online (Sandbox Code Playgroud)

看起来这可以使用静态方法完成,这可能是我最终要做的,但我想检查一下lazyweb:实际上有一种干净,简单的方法来实例化"内联"PHP类(如图所示)上面的片段)为此目的?

如果我决定使用静态方法,那么让一个类的静态方法返回类本身的实例化是否过于愚蠢?(有效地编写我自己的构造函数 - 那不是构造函数吗?)感觉有点脏,但如果没有太多可怕的副作用,我可能会这样做.

我想我也可以使用get_user()方法预先实例化一个UserFactory,但我很好奇我上面提到的解决方案.

php oop static-methods

8
推荐指数
4
解决办法
6924
查看次数

无需使用PHP进行变量赋值即可动态创建对象

我很好奇是否可以在PHP中动态创建一个对象.我以为我以前见过它.当然,我可以将它分配给一个变量,但只是想知道这是否可能.

new className()->someMethod();
Run Code Online (Sandbox Code Playgroud)

当然这会引发语法错误,所以很明显它不是那样做的(如果它甚至可能).我应该把它分配给一个变量,因为我真的没有问题这样做我只是好奇吗?


只是进一步的细节.静态方法实际上不是一个选项,因为我试图这样做的类是PHP的ReflectionMethod类.

php class object

6
推荐指数
2
解决办法
3735
查看次数

实例化并在一行中调用方法

有没有办法实例化一个类并在一行中调用其中一个方法?我希望以下内容可行,但不会:

(new User())->get_name();
Run Code Online (Sandbox Code Playgroud)

php oop

0
推荐指数
2
解决办法
1671
查看次数

标签 统计

php ×3

oop ×2

class ×1

object ×1

static-methods ×1