方法链

时间:2015-02-21 19:00:42

标签: php methods 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();

我想创建一个像loader类一样的简单代码点火器。有没有正确的方法来做这种技术?

1 个答案:

答案 0 :(得分:1)

您可以使用Fluent Interface模式。

<?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
相关问题