PHP MVC如何自动调用config?
伊谢尔伦
伊谢尔伦 2017-04-11 08:56:53
[PHP讨论组]

自己简单设计了PHP MVC框架,我想控制器或模型全局调用config里的数组。
框架:

app
 |-controllers
     |-homcontrollers.php
 |-models
config
 |-config.php
index.php

在index.php文件已经加载config.php文件了

require 'config/config.php'

那么问题来了,在homcontrollers.php如何自动获取config.php文件?

我不想homcontrollers.php 都这样加载:

class homcontrollers 
{

    public function index()
    {
     require '../config/config.php'
    }
        public function about()
    {
     require '../config/config.php'
    } 

}
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(5)
PHPz

实现一个Config的类,以下是伪代码:

Arr.php

为了图方便,我就直接用laravel内部的数组类了

https://github.com/laravel/framework/blob/5.3/src/Illuminate/Support/Arr.php

config/app.php

return [
    'site' => 'My App',
    'data' => [
        'kk' => 1,
    ],
];

Cache.php


class Config {
    static $cached;
    
    public static function load($file)
    {
        if (!isset(static::$cached[$file]))
           static::$cached[$file] = @require('path/to/config/'.$file.'.php');
    }
    
    public static function get($keys, $default_value = NULL)
    {
        list($file, $key) = explode('.', $keys, 2);
        static::load($file);

        return !empty($key) ? Arr::get(static::$cached[$file], $key, $default_value) : static::$cached[$file];
    }
    
    public static function set($key, $value)
    {
        list($file, $key) = explode('.', $keys, 2);
        if (empty($key)) return false;
        static::load($file);
        return Arr::set(static::$cached[$file], $key, $value);
    }
}

使用

echo Cache::get('app.site');
echo Cache::get('app.data.kk');
大家讲道理

你可以尝试用autoload

迷茫

在index.php 获取了不是后面的controller都能自动require了吗?这个index.php不是启动文件?

获取内容可以 $config = include "config/config.php";
var_dump($config);

PHPz

设置一个管理配置文件的类或者接口,再把该类设置成自动加载即可!实现的方法有很多,关键怎么处理,看你的喜好了!

高洛峰

在index.php入口执行的时候 config.php已经包含进来的,所有的常量已经初始化好了.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号