类中的PHP函数类别/参数中的案例

类中的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

我想修改此代码:

这个函数实际上读取$mode来理解它要做什么

请参阅下面的代码。 此代码将不起作用。我想你能告诉我,为了让它工作,我必须做些什么改变吗

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();