我对PHP还是很陌生,我正在寻找一种方法来递归数组,并根据数组的内容转到特定的函数。
例如,如果我有一个包含3个值的数组 '电子邮件,名称,密码'
我需要我的代码来运行每个函数。
以下代码是我目前拥有的。
<?php
$a = $_POST;
/**
*datavalidation
*/
class validation
{
// private $output = [];
public $data = [];
function __construct($data)
{
$this->data= $data;
$this->begin();
}
function begin()
{
foreach ($this->data as $key => $value)
{
$this->$key;
}
$this->__destruct();
}
}
答案 0 :(得分:1)
要动态调用一个函数,还需要执行该函数,否则调用一个属性,因此:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
应该是
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
答案 1 :(得分:1)
foreach ($this->data as $func_name => $values){
call_user_func($func_name, $values);
}
答案 2 :(得分:0)
function begin() {
foreach ($this->data as $key => $value) {
$this->$key();
}
}
除此之外,为什么还要使用构造函数执行操作?首先创建对象,并在初始化后调用对象的方法,直到不再需要它为止。处理异常和调试应用程序会更容易。
$obj= new Validation();
$obj->begin();
or in a single line:
(new Validation())->begin();
注意:第二种方法自5.4 (reference)起可用
此外,没有必要从拥有者对象调用析构函数(现在您正在构造函数中调用析构函数!ctor() -> $this->begin() -> $this->__destruct()
。在外部使用您的对象的人将调用析构函数(在隐式或明确的方式)。