在 php 中使用“函数 $var() { }” 是否为真


Is the use of "function $var() { }" true in php?

我正在使用代码点火器,在控制器文件夹中,我创建了一个php文件,如下所示:
注意:自动连接数据库。

<?php
    class Book extends CI_Controller {
        $query = $this->db->get('books');
        foreach ($query->result() as $row) {
            function $row->book_name() {
                echo $row->book_name;
            }
        }
    }
?>

我尝试通过从数据库中获取书名来创建函数,但我不能。通过在函数名称中使用$variable,是否可以创建函数?如果没有,如何快速创建它?谢谢。。。

当然。

$myfunction = function($a,$b,$c) {return $a+$b+$c;};

这是匿名函数的一个示例。它没有名称,但可以通过 $myfunction(1,2,3) 访问。

我不完全确定您在示例中要做什么...仅仅echo $row->book_name就足够了吗?或者你是否在尝试定义一个与书同名的函数?在后一种情况下,您可以使用变量:${$row->book_name} = function... - 这可能不是一个好主意。

我想你可能对__call()感兴趣。

如果调用不存在的类中的方法,则会调用__call()方法,您可以从那里处理调用。

在读取结果时将书籍存储在数组中,并向类中添加__call方法。 访问该方法时,可以根据调用的函数的名称在数组中搜索书籍,并采取适当的操作。

class Book extends CI_Controller {
    protected $_books = array();
    public function __construct() {
        $query = $this->db->get('books');
        foreach ($query->result() as $row) {
            $this->_books[] = $row->book_name;
        }
    }
    public function __call($name, $arguments) {
        if (in_array($name, $this->_books)) {
            echo $name;
        } else {
            ehco 'I do not have this book!';
        }
    }
}

请记住 PHP 的命名方法规则,有效的函数名称以字母或下划线开头,后跟任意数量的字母、数字或下划线。 不允许有空格,因此请记住这一点。

您要搜索的是create_function()吗?

但说真的,我花了一分钟来谷歌它。