Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PackageBaseClass::另一个类->;方法()-在PHP5中是否可能?_Php_Oop - Fatal编程技术网

PackageBaseClass::另一个类->;方法()-在PHP5中是否可能?

PackageBaseClass::另一个类->;方法()-在PHP5中是否可能?,php,oop,Php,Oop,我尝试调用如下方法: PackageName::BankAccounts->create('arg1', 'arg2'); 但我得到了一个解析错误: 分析错误:语法错误,在 在PHP5.6.14中,但我真的觉得我已经在某个地方看到了这种风格 是我错了,还是在PHP5中有这样一种方式来完成调用方法的技巧?我认为正确的语法是: (new PromisePay::BankAccountRepository())->getBankAccountById('asdasdasd'); 要从类

我尝试调用如下方法:

PackageName::BankAccounts->create('arg1', 'arg2');
但我得到了一个解析错误:

分析错误:语法错误,在

在PHP5.6.14中,但我真的觉得我已经在某个地方看到了这种风格


是我错了,还是在PHP5中有这样一种方式来完成调用方法的技巧?

我认为正确的语法是:

(new PromisePay::BankAccountRepository())->getBankAccountById('asdasdasd');
要从类名中获取对象,必须使用
new
创建对象


但是,在一个新对象上立即这样做没有多大意义。您必须先将银行帐户添加到存储库中,然后才能检索它。

我认为正确的语法是:

(new PromisePay::BankAccountRepository())->getBankAccountById('asdasdasd');
要从类名中获取对象,必须使用
new
创建对象

但是,在一个新对象上立即这样做没有多大意义。您必须先将银行帐户添加到存储库中,然后才能检索它。

好了:

<?php

class BankAccount {
    public static function getBankAccountById($id) {
        return array('data', 'more data', '_self' => $id);
    }
}

class BaseClass {
    public static function __callStatic($className, $argsWeWontUse) {
        return new $className;
    }
}

$call = BaseClass::BankAccount()->getBankAccountById('abcdefghijkl123456');

print_r($call);

/*

Array
(
    [0] => data
    [1] => more data
    [_self] => abcdefghijkl123456
)

*/

?>

尽管如此,我还是很感谢您抽出时间来巴尔马。

我们开始了:

<?php

class BankAccount {
    public static function getBankAccountById($id) {
        return array('data', 'more data', '_self' => $id);
    }
}

class BaseClass {
    public static function __callStatic($className, $argsWeWontUse) {
        return new $className;
    }
}

$call = BaseClass::BankAccount()->getBankAccountById('abcdefghijkl123456');

print_r($call);

/*

Array
(
    [0] => data
    [1] => more data
    [_self] => abcdefghijkl123456
)

*/

?>



尽管如此,我还是很感谢您花时间在Barmar上。

->
在对象之后,而不是在类名之后。如果您调用的是静态方法,那么它就是
PackageName::BankAccounts::create()
@Barmar BankAccounts也是一个对象。PackageName和BankAccounts都是,而create()是一种方法。@Barmar我知道有
PackageName::BankAccounts::create()
的可能性,但我的员工希望按照我在问题中所述的方式完成。如果
BankAccounts
是一个包含对象的变量,在它之前需要一个
$
PackageName::$BankAccounts
->
在对象后面,而不是类名。如果调用的是静态方法,则它也是
PackageName::BankAccounts::create()
@Barmar BankAccounts也是一个对象。PackageName和BankAccounts都是,而create()是一种方法。@Barmar我知道有
PackageName::BankAccounts::create()
的可能性,但我的员工希望按照我在问题中所述的方式完成。如果
BankAccounts
是一个包含对象的变量,您需要一个
$
才能提交:
PackageName::$BankAccounts
。好的,我非常感谢您的回复,如果这仍然是最好的答案,我会在接下来的几个小时内接受。那么,关于PackageName::Class:Method()模式,您认为您的答案也是最好的选择吗?
PackageName::Class::Method()
用于静态方法
getBankAccountById
是一个对对象进行操作的方法。很抱歉,
getBankAccountById
是一个静态方法,
PackageName::Class::method()
会产生PHP解析错误,使其看起来像是PHP中不允许使用上述调用格式。这与文档中的示例不同。它显示:
$bankAccount=$repo->getBankAccountById('Account_id')这是原始包中的文档(我的是fork)。你可以在这里看到最新版本的
getBankAccountById
:好的,我很感谢你的回复,如果它仍然是最好的答案,我会在接下来的几个小时内接受它。那么,关于PackageName::Class:Method()模式,您认为您的答案也是最好的选择吗?
PackageName::Class::Method()
用于静态方法
getBankAccountById
是一个对对象进行操作的方法。很抱歉,
getBankAccountById
是一个静态方法,
PackageName::Class::method()
会产生PHP解析错误,使其看起来像是PHP中不允许使用上述调用格式。这与文档中的示例不同。它显示:
$bankAccount=$repo->getBankAccountById('Account_id')这是原始包中的文档(我的是fork)。您可以在此处查看最新版本的
getBankAccountById