0

我正在使用 codeigniter,在控制器文件夹中,我创建了一个 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,是否可以创建函数?如果没有,如何快速创建它?谢谢...

4

3 回答 3

4

绝对地。

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

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

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

于 2012-06-13T22:02:01.577 回答
4

我想你可能对__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 命名方法的规则,有效的函数名称以字母或下划线开头,后跟任意数量的字母、数字或下划线。不允许有空格,所以请记住这一点。

于 2012-06-13T22:04:39.203 回答
0

您正在搜索的是create_function()吗?

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

于 2012-06-13T22:01:23.043 回答