php - PHP CodeIgniter 框架中的命名空间

标签 php codeigniter namespaces

CodeIgniter 是否支持命名空间?

最佳答案

如何在 Codeigniter 中使用命名空间

实际上,您可以让命名空间与应用程序模型中的相对路径结合使用。此修改使加载模型更加容易,还允许您拥有接口(interface)...

将此添加到您的 application/config/config.php 的末尾

spl_autoload_extensions('.php'); // Only Autoload PHP Files

spl_autoload_register(function($classname) {
    if (strpos($classname,'\\') !== false) {
        // Namespaced Classes
        $classfile = strtolower(str_replace('\\', '/', $classname));

        if ($classname[0] !== '/') {
            $classfile = APPPATH.'models/' . $classfile . '.php';
        }               
        require($classfile);
    } elseif (strpos($classname, 'interface') !== false) {
        // Interfaces
        strtolower($classname);
        require('application/interfaces/' . $classname . '.php');
    }
});

示例命名空间类:

<?php
// File: application/models/foo/bar.php
namespace foo;

class Bar extends \CI_Model implements \Awesome_interface {

    public $foobar;

    public function __construct() {
        return parent::__construct();
    }

    public function getFoobar() {
        return $this->foobar;
    }

    public function setFoobar($val) {
        $this->foobar = $val;
    }

}

代码中某个地方的类实例化示例:

重要提示:不要使用内置的 CI_Loader(例如:$this->load->model();)

// This will Autoload Your Namespaced Class
$example = new foo\Bar();

或者在您的 PHP 类(例如: Controller 、其他模型)之上,您可以这样做...

<?php
...
use foo\Bar as FooBar;

...

// Then you can just do this
$example = new FooBar();

接口(interface)示例:

<?php
// File: application/interfaces/awesome_interface.php
interface Awesome_interface {

    public function getFoobar();

}

关于php - PHP CodeIgniter 框架中的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3700626/

相关文章:

php - 如何在 Codeigniter 的数据库中存储多个选择框值?

javascript - Codeigniter:根据选择 ID 值更改数据表

php/mysql 事务在失败时不回滚(Codeigniter 框架)

javascript - JS 命名空间范围 : "this" inside "var" function evaluates to "window"

php - 关于 PHP 命名空间的几个问题

swift - 两个框架使用一个属性的名称

javascript - 从 mysql 刷新谷歌地图标记

javascript - 如何设置页面之间转换的加载图标?

php - "Read More"按钮在 PHP、MySQL CMS 中停止工作

php - 访问子类中的父属性值