类中的PHP函数类别/参数中的案例
我想修改此代码: 这个函数实际上读取$mode来理解它要做什么 请参阅下面的代码。 此代码将不起作用。我想你能告诉我,为了让它工作,我必须做些什么改变吗类中的PHP函数类别/参数中的案例,php,class,parameters,Php,Class,Parameters,我想修改此代码: 这个函数实际上读取$mode来理解它要做什么 请参阅下面的代码。 此代码将不起作用。我想你能告诉我,为了让它工作,我必须做些什么改变吗 class send($message) { $msg = ">> " . $message; public function client($client, $param2) { // $client is $param1 of previous code // code using $msg
class send($message)
{
$msg = ">> " . $message;
public function client($client, $param2) { // $client is $param1 of previous code
// code using $msg
}
public function clients($clients, $param2) { // $clients is an array and the $param1 of previous code
// code using $msg
}
public function all($param2) {
// code using $msg
}
}
send("Hello World!")::all($whatever2);
我知道第二个密码很乱。它不起作用,但我想做这样的事情。对函数和参数进行分类。我希望你明白了。也许没有这样的方法,我必须在第一段代码中使用$mode方法?您正在尝试分解函数并从部分创建一个类 代码中有一些语法错误。 您在这里混淆了很多概念:函数、类、静态和动态调用。请阅读PHP手册中有关OOP的基本章节: 这部分是错误的
class send($message)
{
类定义以关键字class开头,后跟类名:
class Send {
}
您不能直接在类中使用它,您可以将它包装在构造函数或函数中
$msg = ">> " . $message;
您可以声明接受参数的构造函数:
public function __construct($message) {
$this->message = $message;
}
此类接受构造函数中的消息并将其设置为属性。
然后,您可以在函数$this->message中重用它
我明白了,非常感谢Jens A.Koch
对于在座的各位:
在PHP 5.4之前:
PHP5.4+不幸的是,我有5.3,但它应该可以工作
不需要公共功能b:
class send {
public function __construct($msg) {
$this -> message = $msg;
}
public function clients(/* many params */) {
echo "some clients say: ".$this->message;
}
public function client(/* many params */) {
echo "one client says: ".$this->message;
}
public function all(/* many params */) {
echo "all clients say: ".$this->message;
}
}
// CALLING IT
(new send("test"))->clients();
非常非常好。但是,因为我不想用两行代码来调用它,我能做些什么来在一行代码中运行它呢?比如Sendmessage::toClient'john',more'很高兴我能帮上忙。请忘记作用域解析运算符:。当使用静力学时,很容易陷入糟糕的设计中。您正在寻找的是所谓的方法链接或菊花链接。例如,请参见此处:&您只需在方法return$this;的末尾返回对象即可;。换句话说:类的方法返回对象本身,这允许对另一个方法进行以下调用。更新我的答案见最后一行。
class Send
{
private $message = '';
public function __construct($message) {
$this->message = $message;
}
public function toClient($client, $param) {
var_dump($this->message, $client, $param);
}
public function toClients($clients, $param) {
var_dump($this->message, $clients, $param);
}
public function toAll($param) {
var_dump($this->message, $param);
}
}
// Usage
$message = 'Hello World';
// instantiate the class
// and pass the message you want to send as param
// execute a specific class method
$send = new Send($message);
$send->toClient('john', 'more');
// with PHP 5.4 it's a one-liner
(new Send($message))->toClient('john', 'more');
class send {
public function __construct($msg) {
$this -> message = $msg;
}
public function clients(/* many params */) {
echo "some clients say: ".$this->message;
}
public function client(/* many params */) {
echo "one client says: ".$this->message;
}
public function all(/* many params */) {
echo "all clients say: ".$this->message;
}
// function b (build) returns the class
public function b($msg) {return new self($msg);}
}
// CALLING IT
send::b("test")->clients(); // >> some clients say: test
class send {
public function __construct($msg) {
$this -> message = $msg;
}
public function clients(/* many params */) {
echo "some clients say: ".$this->message;
}
public function client(/* many params */) {
echo "one client says: ".$this->message;
}
public function all(/* many params */) {
echo "all clients say: ".$this->message;
}
}
// CALLING IT
(new send("test"))->clients();