方法链接


Method chaining

class A {
    public function model($name) {
        if (file_exists($name.'.php')) {
            require $name.'.php';
            $this->$name = new $name();
        }
    }
}
class C extends A {
    function __construct() {
        $this->load = $this;
        $this->load->model('test');
        $this->test->say();
    }
}
$Controller = new C();

我想创建一个简单的代码点火器,如加载器类。有没有正确的方法来做这个技术?

您将使用Fluent Interface Pattern。

<?php
class Employee
    {
    public $name;
    public $surName; 
    public $salary;
    public function setName($name)
    {
        $this->name = $name;
        return $this;
    }
    public function setSurname($surname)
    {
        $this->surName = $surname;
        return $this;
    }
    public function setSalary($salary)
    {
        $this->salary = $salary;
        return $this;
    }
    public function __toString()
    {
        $employeeInfo = 'Name: ' . $this->name . PHP_EOL;
        $employeeInfo .= 'Surname: ' . $this->surName . PHP_EOL;
        $employeeInfo .= 'Salary: ' . $this->salary . PHP_EOL;
        return $employeeInfo;
    }
}
# Create a new instance of the Employee class:
$employee = new Employee();
# Employee Tom Smith has a salary of 100:
echo $employee->setName('Tom')
              ->setSurname('Smith')
              ->setSalary('100');
# Display:
# Name: Tom
# Surname: Smith
# Salary: 100