纤细的路由和控制器(这个 __call 函数如何从路由调用以及为什么 $this->request 使用 $request= 的 insted)
slim routing and controller (how this __call function is calling from route and why $this->request is using insted of $request=)
伙计们请帮助我理解这些代码
图1中的路由器正在使用info方法调用
正如您在 AccountController 中看到的那样,已经存在 info() 那么为什么 __call() 这个魔术函数正在调用
这些参数是什么 $this->request ,$this->response
我们可以像
一样保存所有数据
$request = $args[0]; $response = $args[1]; $属性 = $args[2];
为什么使用 $this-> syntex
这行 $this->$name();
是什么意思
Router.php
<?php
$app->get('/account', '\App\Controller\AccountController:info');
?>
AccountController.php
<?php
/**
* AccountController
* @package Controllers
*/
namespace App\Controller;
final class AccountController extends \App\Core\Controller
{
protected function info()
{
echo $this->client_id;
}
}
Controller.php
<?php
namespace App\Core;
class Controller
{
public function __call($name,$args) { //line 25
//echo "Call method : ".$name;
$this->request = $args[0];
$this->response = $args[1];
$this->attributes = $args[2];
//print_r($this->attributes);
$this->client_id = $this->request->getAttribute("client_id");
$this->$name();
}
}
?>
Router.php 在 AccountController.php 上调用了您的 info()
方法
但是您的方法受到保护并且 info()
方法无法从 class 中访问
所以 __call()
魔术方法已使用 $name
和 $args
参数调用。
$name => 值为方法名。 "info".
$args => 响应、请求、属性值数组
$this
=> 它是对当前object的引用,在object-oriented代码中最常用。
What does the variable $this mean in PHP?
request
,response
,attributes
,client_id
它们是控制器的变量 class 并且可以在控制器的每个方法上访问 class children。喜欢 $this->client_id
在你的 AccountController
class.
$this->request = $args[0];
$this->response = $args[1];
$this->attributes = $args[2];
$this->client_id = $this->request->getAttribute("client_id");
$this->$name();
动态调用方法
$this 引用它自己并且 $this->$name();
将调用作为 $name in __call()
函数接收的函数的方法
伙计们请帮助我理解这些代码
图1中的路由器正在使用info方法调用
正如您在 AccountController 中看到的那样,已经存在 info() 那么为什么 __call() 这个魔术函数正在调用
这些参数是什么 $this->request ,$this->response
我们可以像
一样保存所有数据$request = $args[0]; $response = $args[1]; $属性 = $args[2];
为什么使用 $this-> syntex 这行 $this->$name();
是什么意思Router.php
<?php
$app->get('/account', '\App\Controller\AccountController:info');
?>
AccountController.php
<?php
/**
* AccountController
* @package Controllers
*/
namespace App\Controller;
final class AccountController extends \App\Core\Controller
{
protected function info()
{
echo $this->client_id;
}
}
Controller.php
<?php
namespace App\Core;
class Controller
{
public function __call($name,$args) { //line 25
//echo "Call method : ".$name;
$this->request = $args[0];
$this->response = $args[1];
$this->attributes = $args[2];
//print_r($this->attributes);
$this->client_id = $this->request->getAttribute("client_id");
$this->$name();
}
}
?>
Router.php 在 AccountController.php 上调用了您的 info()
方法
但是您的方法受到保护并且 info()
方法无法从 class 中访问
所以 __call()
魔术方法已使用 $name
和 $args
参数调用。
$name => 值为方法名。 "info".
$args => 响应、请求、属性值数组
$this
=> 它是对当前object的引用,在object-oriented代码中最常用。
What does the variable $this mean in PHP?
request
,response
,attributes
,client_id
它们是控制器的变量 class 并且可以在控制器的每个方法上访问 class children。喜欢 $this->client_id
在你的 AccountController
class.
$this->request = $args[0];
$this->response = $args[1];
$this->attributes = $args[2];
$this->client_id = $this->request->getAttribute("client_id");
$this->$name();
动态调用方法
$this 引用它自己并且 $this->$name();
将调用作为 $name in __call()
函数接收的函数的方法