php ci下添加一个创建常用的模块和控制器方法
我这么写是非常不好的 ,这些都可以写在lirbraries里面 (ci就是这么干的)
我这里是自己用 大概一个模型 没那么多讲究
现在core/CodeIgniter.php 文件
if($modle_file=config_item('modle_file'))
{
if ($modle_file === TRUE)
{
$modle_file=config_item('modle_type');
$MOF=& load_class('Newfile','core');
$MOF->createModule($modle_file); //创建文件加载类
}
}
后在配置文件里面 填写
$config['modle_file']=TRUE; //是否创建常用的model如 admin group modules index 就是常用的 角色管理 账号管理 首页显示 模块管理
$config['modle_type']='new'; // 这个是模板和代码不同
然后在core/下面创建一个CI_Newfile类
具体代码为:
<?php
/**
* 这是一个扩展类
*
* 主要用来添加 常用的model模块还有controller控制器
*/
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* model、controller扩展类
*
* @package CodeIgniter
* @subpackage Libraries
* @category Logging
* @author shaonian
* @link
*/
class CI_Newfile {
/**
* 模块列表
*
* @var array
*/
protected $_model_arr=['Admin'];
protected $_model_prefix='Model_';
/**
* 控制器列表
*
* @var int
*/
protected $_controller_arr = [];
/**
* 目录权限
*
* @var int
*/
protected $_chmod = 0775;
/**
* 创建时间
*
* @var string
*/
protected $_date_fmt = 'Y-m-d H:i:s';
/**
* 控制类
*
* 其实这个类 也可以写在扩展里面 因为 ci本来就让扩展用法的
*
* @return void
*/
public function __construct($model_arr=NULL,$controller_arr=NULL)
{
//$config =& get_config(); //加载全局配置文件
//判断模块是否空或者数组
if(empty($model_arr) && is_array($model_arr))
{
$this->_model_arr=$model_arr;
}
//判断控制器是否空或者数组
if(empty($controller_arr) && is_array($controller_arr))
{
$this->_controller_arr=$controller_arr;
}
}
/**
* 根据路径创建模块
*
* @param [type] $path
* @return void
*/
public function createModule($is_type_system='new')
{
// if(!is_string($path))
// {
// $path=(string)$path;
// }
//根文件
$Model_path_base=BASEPATH.'core/newfile/model/'.$is_type_system.DIRECTORY_SEPARATOR;
$this->mkdirs($Model_path_base); //递归创建目录
$get_content=$this->file_get_contents_write($Model_path_base);
//还有一种方法
/**
* $content=$get_content instanceof Iterator; 这个详细的方法 看php手册的 迭代接口
*/
foreach($get_content as $model_key=>$content)
{
//创建文件
$this->mkdirs(APPPATH.'models/sys/');
file_put_contents(APPPATH.'models/sys/'.$model_key.'.php',$content);
}
}
/**
* 循环读取文件并创建
* 其实可以不用生成器的 反正就4个文件 file_Get_content直接读取 这些文件 还不到 10kb也挺快的
*/
public function file_get_contents_write($path)
{
foreach($this->_model_arr as $val)
{
if(!file_exists($path.strtolower($val).'.txt'))
{
echo "你的文件{$this->_model_prefix}{$val}未找到,请放入后查看";exit(0);
}
yield $this->_model_prefix.$val=>file_get_contents($path.strtolower($val).'.txt');
}
}
/**
* 递归创建目录
*
* @param [type] $dir
* @return void
*/
public function mkdirs($dir=NULL)
{
return is_dir($dir) or ($this->mkdirs(dirname($dir))) and mkdir($dir,0755);
}
}
目前我只实现了model创建,目前的构思是 创建常用的controller代码model代码,数据库创建,模板等
这里使用创建数据库的话,得吧loader里面的database拿过来放在里面或者可以吧这个类加载放在controller下面
php ci下添加一个创建常用的模块和控制器方法的更多相关文章
- 痞子衡嵌入式:MCUXpresso IDE下添加C++源文件进SDK工程编译的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加C++源文件进SDK工程编译的方法. 最近有客户反映在MCUXpresso IDE下的SDK工程里添加 ...
- 给kali的Metasploit下添加一个新的exploit
转载:https://blog.csdn.net/SilverMagic/article/details/40978081 首先在/usr/share/metasploit-framework/mod ...
- Linux下添加磁盘创建lvm分区
shell> fdisk /dev/xvdb #### 选择磁盘 Command (m for help): m #### 帮助 Command action a toggle a bootab ...
- linux下添加自动启动项,linux 开机自动启动脚本方法
#service servicename status是当前状态#chkconfig --list servicename是查看启动状态,也就是是否开机自动启动 首先写好脚本,如 mysql,把它放到 ...
- ASP.NET MVC环境下实现一个网站多个网站模板的方法
asp.net mvc下实现多个网站模板的方法,让ASP.NET一个网站有多套网站模板,不用的场景下使用不用的mvc 模版. 比如有默认,红,蓝,绿几种网站模板,客户可以根据自己喜好选择自己喜欢的网 ...
- python与系统做交互常用的模块和使用方法
1.使用os模块与系统做简单命令的交互 >>>import os >>>os.popen('pwd') <open file 'pwd', mode 'r' ...
- ubuntu下用户的创建、修改
一.1.添加用户 (1)创建一个新的用户username #sudo useradd username (2)设置用户username 的密码 #sudo passwd username 2.添加用户 ...
- 为网站添加一个图标icon
<link rel="icon" href="/favicon.ico" type="image/x-icon"/> <l ...
- Linux(以RHEL7为例)下添加工作区的方法|| The Way To Add Workspace On Linux
Linux(以RHEL7为例)下添加工作区的方法 The Way To Add Workspace On Linux 作者:钟凤山(子敬叔叔) 编写时间:2017年5月11日星期四 需求:有时候在使用 ...
随机推荐
- c++ 在window下创建窗口的基本步骤
1. WinMain 函数的定义: 2. 创建一个窗口 2.1 设计一个窗口类 WNDCLASS 2.2 注册窗口类 2.3 创建窗口 2.4 显示及更新窗口 3. 进行消息循环 BOOL GetMe ...
- Arduino 中 EEprom 写入读取清除
转自:https://www.arduino.cn/thread-1157-1-1.html EEPROM (Electrically Erasable Programmable Read-Only ...
- WebStrom配置TypeScript开发环境
安装NodeJS node.js下载地址:https://nodejs.org/en/download/ 安装TypeScript npm install typescripot -g 新建tscon ...
- 一个Java对象的内存布局
1.对象的创建过程 class loading class linking(verification,preparation,resolution) class initializing 申请对象内存 ...
- 安装haproxy
安装依赖 yum install -y gcc pcre pcre-devel openssl openssl-devel 创建依赖账号,并禁止账号登录 useradd -M -s /sbin/nol ...
- 每日一题 LeetCode 486. 预测赢家 【递推】【前缀和】【动态规划】
题目链接 https://leetcode-cn.com/problems/predict-the-winner/ 题目说明 题解 主要方法:递推:动态规划:前缀和 解释说明: 求前缀和 pre_nu ...
- devops-jenkins部署和基本使用
1. jenkins部署和基本使用 1.1) 先关闭centos 7的自带防火墙和selinux [root@test-2 ~]# /bin/systemctl stop firewalld [ro ...
- MeteoInfoLab脚本示例:数据投影-FLEXPART
FLEXPART是一个类似HYSPLIT的扩散模式,它输出的netcdf文件参照了WRF,可惜全局属性没有写全,比如只有一个投影名称(例如Lambert),没有相关的投影参数:中央经度,标准纬度等等. ...
- js、css等文件引入空白问题
路径没错,不管路径怎么改变,js.css等文件就是引入失败.很多时候是因为Spring的过滤器把js.css等资源文件拦截了.default是tomcat配置的一个servlet,"Defa ...
- C++虚函数与多继承
虚函数 C++用虚函数实现运行时多态,虚函数的实现是由两个部分组成的,虚函数指针与虚函数表. 虚函数指针(vptr)是指向虚函数表的指针,在一个被实例化的对象中,它总是被存放在该对象的地址首位.而虚函 ...