我正在使用代码点火器,在控制器文件夹中,我创建了一个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()吗?
但说真的,我花了一分钟来谷歌它。