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日星期四 需求:有时候在使用 ...
随机推荐
- Python中字符串有哪些常用操作?纯干货超详细
- 使用Python学习win32库进行内存读写
前言: 上一周,在52的精华帖中,看到有位大佬用Python制作了鬼泣5的修改器,看完才知道,原来Python也可以对内存进行操作,出于对技术的好奇,看完以后,决定自己也尝试一下. 要用到的工具: C ...
- 2020年java全套教程,此套java涵盖了pdf,java源码,项目案例,完整视频约3000G的资源
疫情期间,百无聊赖,是不是需要充电一下,让自己更有竞争力呢?学习java一定要快呦! 废话不多说了,网盘已经爆炸了,把2006年-2020年的全部资料都发给爱学习的你吧, 希望可以改变你的命运,或者是 ...
- day58 Pyhton 框架Django 01
内容回顾 python基础 网路编程 并发编程 数据库 前端 osi7层 tcp/ip 5层模型 应用层 表示层 ...
- Elasticsearch 基于external的乐观锁的版本控制
version_type=external,唯一的区别在于,_version,只有当你提供的version与es中的_version一模一样的时候,才可以进行修改,只要不一样,就报错:当version ...
- ImageMagick实现图片的旋转/翻转/裁剪(ImageMagick6.9.10)
一,imagemagick的安装 请参见: https://www.cnblogs.com/architectforest/p/12807514.html 说明:刘宏缔的架构森林是一个专注架构的博客, ...
- 第八章 nginx基础介绍
一.nginx概述 nginx是一个开源且高性能.可靠的http web服务.代理服务. 开源:直接获取源代码 高性能:支持海量并发 可靠:服务稳定 二.nginx特点 1.高性能高并发 性能高,支持 ...
- 1.opengl绘制三角形
顶点数组对象:Vertex Array Object,VAO,用于存储顶点状态配置信息,每当界面刷新时,则通过VAO进行绘制. 顶点缓冲对象:Vertex Buffer Object,VBO,通过VB ...
- maven中pom.xml文件配置
<properties> <spring.version>4.3.18.RELEASE</spring.version> ...
- skywalking8.1.0(一) 安装与部署
skywalking部署 背景介绍 目前公司后端服务全部为微服务并运行在kubernetes集群上,而大量的微服务的背后拥有很复杂的调用关系,纵使你是公司的资深开发也很难理清每一个后端服务之间的依赖关 ...