phpcms学习总结
<span 文件目录结构 根目录 </span>|<span – api 接口文件目录 </span>|<span – caches 缓存文件目录 </span>|<span – configs 系统配置文件目录 </span>| – caches_*<span 系统缓存目录 </span>|<span – phpcms phpcms框架主目录 </span>|<span – languages 框架语言包目录 </span>|<span – libs 框架主类库、主函数库目录 </span>|<span – model 框架数据库模型目录 </span>|<span – modules 框架模块目录 </span>|<span – templates 框架系统模板目录 </span>|<span – phpsso_server phpsso主目录 </span>|<span – statics 系统附件包 </span>|<span – css 系统css包 </span>|<span – images 系统图片包 </span>|<span – js 系统js包 </span>|<span – uploadfile 网站附件目录 </span>| – admin.<span php 后台管理入口 </span>| – index.<span php 程序主入口 </span>| – crossdomain.<span xml FLASH跨域传输文件 </span>| – robots.<span txt 搜索引擎蜘蛛限制配置文件 </span>| – favicon.<span ico 系统icon图标 URL访问 <strong>PHPCMS</strong>是采用MVC设计模式开发</span>,<span 基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。 参数名称 描述 位置 备注 m 模型</span>/模块名称 phpcms/<span modules中模块目录名称 必须 c 控制器名称 phpcms</span>/modules/模块<span /*</span><span .php 文件名称 必须 a 事件名称 phpcms/modules/模块/*.php 文件中方法名称 模块访问方法[示例]: http://zuzwn.com/index.php?m=content&c=index&a=show&id=1 其中 m = content 为模型/模块名称 位于phpcms/modules/content c = index 为控制器名称 位于phpcms/modules/content/index.php a = show 为方法名称 位于phpcms/modules/content/index.php 中show()方法 id = 1 为其他参数 与正常get传递参数形式相同 如果我们访问您的域名 如: http://www.yourdomain.com/index.php phpcms默认路由会定位到content模块的index控制器中的init操作,因为系统在没有指定模块和控制器的时候,会执行默认的模块和操作。 因此下面的URL的结果是相同的:系统还支持URL路由的功能,这些都能够带来其他的url访问效果。 http://www.yourdomain.com/index.php?m=content&c=index&a=init 系统类库与函数调用 1.系统类库位于系统的phpcms/libs/classes目录下面,函数库文件名为*.class.php 2.系统函数库位于系统的phpcms/libs/functions目录下面,函数库文件名为*.func.php,其中global.func.php为框架中默认加载,global.func.php中函数可直接使用 系统类库调用 pc_base::load_sys_class('类名','扩展地址','是否初始化'); 示例: $http = pc_base::load_sys_class('http'); //实例化http类 pc_base::load_sys_class('format', '', 0); //调用form类,不进行实例化操作 系统函数库调用 pc_base::load_sys_func('函数库名'); 示例: pc_base::load_sys_func('mail'); 调用mail函数包 模块 phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块。即url访问中的m 示例: http://www.yourname.com/index.php?m=content 那么您访问的就是phpcms/modules/content 这个模块。 如果创建一个模块,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了 控制器 phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名成就是文件名+.php,例如一个名为mytest的控制器,那么他的命名为mytest.php即可。 控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同 如果您创建了一个mytest.php在test模块下,那么我们在浏览器里面输入URL: http://www.yourname.com/index.php?m=test&c=mytest 下面是一个控制器类的基本格式,在构建模块部分会具体讲解 <?php defined('IN_PHPCMS') or exit('No permission resources.'); class mytest { function __construct() { } public function init() { echo 'hellp phpcms v9,my name is defalut action'; } } ?> 如果你添加的控制器类继承了其他的类,你要小心你的方法名不要和那个类中的方法名一样了,否则你的方法会覆盖原有的。 命名规范 PHPCMS其自身的一定规范。下面是使用PHPCMS做二次开发中应该遵循的命名规范: 类文件需要以.class.php为后缀(这里是指的phpcms的系统类库文件和模块中的类库文件,第三方引入的不做要求),例如http.class.php。 函数文件需要以.func.php为后缀(第三方引入的不做要求),例如mail.func.php。 类名和文件名一致,例如 phpcmsapp类的文件命名是phpcmsapp.class.php。 数据模型需要以“数据表名称_model.class.php”为形式,类名称与文件名必须相同。 配置文件调用 配置文件配置在caches/configs/目录下。 配置文件调用:使用 load_config方法 $upload_url = pc_base::load_config('配置文件','要获取的配置键','默认配置。当获取配置项目失败时该值发生作用','是否强制重新加载'); 示例: 调用系统配置中的附件路径 $upload_url = pc_base::load_config('system','upload_url'); 二次开发技巧 1.如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过"MY_*.php"的形式进行二次开发。 例如您要对改phpcms/mood/index.php进行二次开发。您可以在与index.php同级的目录下建立"MY_index.php" MY_index.php代码如下 <?php class MY_index extends index{ function __construct() { parent::__construct(); } //……your code } ?> 这样当您通过url访问index控制器的时候,系统会默认指向MY_index.php 并且原文件的方法将被继承,可以直接使用。 数据库配置 数据库配置文件位置:caches/configs/database.php 我们打开这个配置文件,加入我们的数据库配置信息。数据库配置信息为二维数组结构,默认为default,可以根据default结构配置多个数据库链接(如:extended_1) <?php return array ( 'default' => array ( 'hostname' => 'localhost', 'database' => 'phpcms', 'username' => 'admin', 'password' => 'admin', 'tablepre' => 'v9_', 'charset' => 'gbk', 'type' => 'mysql', 'debug' => true, 'pconnect' => 0, 'autoconnect' => 0 ), /* 以下格外添加</span><span */</span> 'extended_1' => <span array</span><span ( </span>'hostname' => '10.10.125.2', 'database' => 'phpcms', 'username' => 'admin', 'password' => 'admin', 'tablepre' => 'v9_', 'charset' => 'gbk', 'type' => 'mysql', 'debug' => <span true</span>, 'pconnect' => 0, 'autoconnect' => 0<span )</span>,<span ); </span>?><span 根据您的数据库连接信息修改上面的配置内容,修改完成后,保存该数据库配置文件。 路由配置 路由配置文件位置:caches</span>/configs/route.<span php 我们打开这个配置文件,加入我们的路由配置信息。路由配置信息为二维数组结构,默认为default。 路由配置文件内容是这样的: </span><?<span php </span><span return</span> <span array</span><span ( </span>'default'=><span array</span>('m'=>'admin', 'c'=>'index', 'a'=>'init'), 'test.youname.com'=><span array</span>('m'=>'test', 'c'=>'index', 'a'=>'init'),<span ); </span>?><span data为一个二维数组,可设置POST和GET的默认参数。POST和GET分别对应PHP中的</span><span $_POST和$_GET两个超全局变量</span><span 。 如下面的例子,在程序中您可以使用</span><span $_POST</span>['catid'<span ]来得到data下面POST中的数组的值。 data中的所设置的参数等级比较低。如果外部程序有提交相同的名字的变量,将会覆盖配置文件中所设置的值。 如: </span><?<span php </span><span return</span> <span array</span><span ( </span>'default'=><span array</span><span ( </span>'m'=>'phpcms', 'c'=>'index', 'a'=>'init', 'data'=><span array</span><span ( </span>'POST'=><span array</span><span ( </span>'catid'=>1<span )</span>, 'GET'=><span array</span><span ( </span>'contentid'=>1<span ) ) ) ) </span>?><span 外部程序POST了一个变量catid</span>=2那么你在程序中使用<span $_POST取到的值是2</span><span ,而不是配置文件中所设置的1。 系统配置 系统配置文件位置:caches</span>/configs/<span system</span>.<span php 具体详见该文件注释 构建模块 开发流程 为你的phpcms创建一个模块的一般开发流程是: </span>1.<span 创建数据库和数据表;(没有数据库操作可略过) </span>2.<span 创建模块目录 </span>3.<span 创建模块控制器类; </span>4.<span 创建模块类与模块函数;(如果只是简单的模块可以不必创建) </span>5.<span 创建模板文件; </span>6.<span 运行和调试。 创建模块 phpcms v9框架中的模块,位于phpcms</span>/<span modules目录中 每一个目录称之为一个模块 如果要创建一个模块,只要在 phpcms</span>/<span modules 目录下创建文件夹并放入你的控制器类就可以了。 例如我要开发一个叫做test的模块,那么首先在 phpcms</span>/<span modules 目录下创建文件夹,并将其命名为test。 test文件夹下通常有三个文件夹</span>:<span classes 为模块类库包 functions 为模块函数库包 templates 为模块模板包 这里通常放置含有权限控制的控制器模板,也就是后台模板。 如果您的模板有单独的前台模板,你需要在phpcms\templates\default下创建一个您的模块目录来放置前台模板 </span>"default"<span 为你的风格包名称,我们默认适用default 这里我们在default文件夹下创建名为test的文件夹存放模板 创建模块控制器 在创建模块中我们已经创建好了一个名为“test”的模块,接下来我们继续为这个模块添加两个控制器类。 phpcms v9的控制器就是模块的类文件,位于phpcms</span>/modules/模块/<span 目录下面。 类名成就是文件名</span>+.php,例如一个名为mytest的控制器,那么他的命名为mytest.<span php即可。 控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同。 控制器类文件包含两种形式: </span>1.mytest.<span php 控制器,前台浏览(不含权限控制) </span><?<span php </span><span /*</span><span defined('IN_PHPCMS') or exit('No permission resources.'); class mytest { function __construct() { } public function init() { $myvar = 'hello world!'; echo $myvar; } public function mylist() { $myvar = 'hello world!this is a example!'; echo $myvar; } } </span><span */</span> ?><span 这个控制器的url访问方法前面已经介绍过了 http</span>:<span //</span><span www.zuzwn.com/index.php?m=test&c=mytest</span> http:<span //</span><span www.zuzwn.com/index.php?m=test&c=mytest&a=mylist</span> <span 没有填写 “a” 的情况下,默认调用init方法 </span>2.mytest_admin.<span php 控制器,后台管理(含权限控制) 后台控制控制器需要加载admin模块下的admin类,并继承该类。 需要注意的是因为你添加的控制器类继承了其他的类,你要小心你控制器的方法名不要和该类中的方法名一样了,否则会造成影响,具体请查看admin类中有哪些方法。 </span><?<span php </span><span defined</span>('IN_PHPCMS') or <span exit</span>('No permission resources.'<span ); pc_base</span>::load_app_class('admin','admin',0<span ); </span><span class</span> mytest_admin <span extends</span><span admin { </span><span public</span> <span function</span><span __construct() { } </span><span public</span> <span function</span><span init() { </span><span $myvar</span> = 'oh,i am phpcmser'<span ; </span><span echo</span> <span $myvar</span><span ; } } </span>?><span 在控制器中增加模板调用 phpcms 可以实现完全的模板与程序分离,所以在我们的控制器程序中要加载模板,才可以更友好的显示出来。 </span>1.<span 加载前台模板 前台模板文件在phpcms\templates\</span><span default</span>\模块名称 目录中,本示例也就在phpcms\templates\<span default</span><span \test中 加载模板方法如下</span>: <span include</span> template('test', 'mytest', 'default'<span ); 其中 test为模块名称 mytest 为模板目录下模板名称</span>,<span default为风格名称,默认不填为defalut 在上面例子中如果要给mytest</span>.<span php中init方法加载一个mytest的模板,如下 </span><span public</span> <span function</span><span init() { </span><span $var</span> = 'hello world!'<span ; </span><span include</span> template('test', 'mytest', 'default'<span ); } 这样我们通过url访问该方法的时候也就加载了对应的模板。 </span>2.<span 加载后台模板 后台模板文件在phpcms\modules\模块名称\templates 目录中,本示例也就在phpcms\modules\test\templates 中 加载模板方法如下: </span><span include</span> <span $this</span>->admin_tpl('mytest_admin_list'<span ); 其中mytest_admin_list为phpcms\modules\test\templates中mytest_admin_list</span>.tpl.php,注意:后台模板必须以.tpl.<span php 作为后缀 在上面例子中如果要给mytest_admin</span>.<span php中init方法加载一个mytest_admin_list的模板,如下 </span><span public</span> <span function</span><span init() { </span><span $myvar</span> = 'oh,i am phpcmser'<span ; </span><span include</span> <span $this</span>->admin_tpl('mytest_admin_list'<span ); } 创建数据库模型类 数据库模型位于:phpcms</span>/model/<span 目录下。 数据模型文件的命名规则建议为数据表名称</span>+'_model.class.php'<span 如果在我们的创建的模块中我要使用一个数据库</span>"test",首先需要建立一个数据库模型文件,文件名称为'test_model.class.php'<span 内容如下: </span><?<span php </span><span defined</span>('IN_PHPCMS') or <span exit</span>('No permission resources.'<span ); pc_base</span>::load_sys_class('model', '', 0<span ); </span><span class</span> test_model <span extends</span><span model { </span><span public</span> <span function</span><span __construct() { </span><span $this</span>->db_config = pc_base::load_config('database'<span ); </span><span $this</span>->db_setting = 'default'<span ; </span><span $this</span>->table_name = 'test'<span ; parent</span>::<span __construct(); } } </span>?><span 注意: </span>1.<span 数据库模型类名称必须与文件名称相同; </span>2.<span $this</span>->db_setting = 'default'<span 为数据库配置文件中配置数据库链接池名称,默认为default,一般情况下不需要修改。 </span>3.<span $this</span>->table_name = 'test'<span 为数据表名称 这样我们就建立好了一个数据库模型类。 在模块的控制器中使用 </span><span $this</span>->db = pc_base::load_model('test_model'<span ); 来加载。 具体如下 </span><?<span php </span><span /*</span><span defined('IN_PHPCMS') or exit('No permission resources.'); class mytest { private $db; function __construct() { $this->db = pc_base::load_model('test_model'); } public function init() { $result = $this->db->select(); var_dump($result); } } </span><span */</span> ?><span 其中</span><span $this</span>->db中所支持的方法请参照phpcms/libs/classes/model.<span class</span>.php中方法

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Vue.js与ASP.NET的结合,实现Web应用的性能优化和扩展的技巧和建议随着Web应用的快速发展,性能优化成为开发者不可或缺的重要任务。Vue.js作为一款流行的前端框架,与ASP.NET的结合可以帮助我们实现更好的性能优化和扩展。本文将会介绍一些技巧和建议,并提供一些代码示例。一、减少HTTP请求HTTP请求的数量直接影响着Web应用的加载速度。通过

译者|陈峻审校|重楼上个世纪90年代,当人们提起软件编程时,通常意味着选择一个编辑器,将代码检入CVS或SVN代码库,然后将代码编译成可执行文件。与之对应的Eclipse和VisualStudio等集成开发环境(IDE)可以将编程、开发、文档、构建、测试、部署等步骤纳入到一个完整的软件开发生命周期(SDLC)中,从而提高了开发人员的工作效率。近年来,流行的云计算和DevSecOps自动化工具提升了开发者的综合能力,使得更多的企业能够更加轻松地开发、部署和维护软件应用。如今,生成式AI作为下一代开

如何在ASP.NET程序中正确使用和优化MySQL连接池?引言:MySQL是一种广泛使用的数据库管理系统,它具有高性能、可靠性和易用性的特点。在ASP.NET开发中,使用MySQL数据库进行数据存储是常见的需求。为了提高数据库连接的效率和性能,我们需要正确地使用和优化MySQL连接池。本文将介绍在ASP.NET程序中如何正确使用和优化MySQL连接池的方法。

如何在ASP.NET程序中重连MySQL连接?在ASP.NET开发中,使用MySQL数据库是非常常见的。然而,由于网络或数据库服务器的原因,有时会导致数据库连接中断或超时。在这种情况下,为了保证程序的稳定性和可靠性,我们需要在连接断开后重新建立连接。本文将介绍如何在ASP.NET程序中实现重连MySQL连接的方法。引用必要的命名空间首先,在代码文件的头部引用

Vue.js与ASP.NET的结合,实现企业级应用的开发和部署在当今快速发展的互联网技术领域,企业级应用的开发和部署变得越来越重要。Vue.js和ASP.NET是两个在前端和后端开发中广泛使用的技术,将它们结合起来可以为企业级应用的开发和部署带来诸多优势。本文将通过代码示例介绍如何使用Vue.js和ASP.NET进行企业级应用的开发和部署。首先,我们需要安装

如何在ASP.NET程序中正确配置和使用MySQL连接池?随着互联网的发展和数据量的增大,对数据库的访问和连接需求也在不断增加。为了提高数据库的性能和稳定性,连接池成为了一个必不可少的技术。本文主要介绍如何在ASP.NET程序中正确配置和使用MySQL连接池,以提高数据库的效率和响应速度。一、连接池的概念和作用连接池是一种重复使用数据库连接的技术,在程序初始

如何在ASP.NET程序中正确使用和优化MySQL连接池的事务性能?在ASP.NET程序中,数据库事务是非常重要的一部分。事务可以确保数据库的一致性和完整性,同时也可以提供更好的性能。而在使用MySQL数据库时,利用连接池来管理连接资源和优化性能是必不可少的。首先,让我们简单了解一下MySQL连接池的概念。连接池是一组连接的缓冲池,通过预先初始化一定数量的数

ASP.NET中的内置对象有“Request”、“Response”、“Session”、“Server”、“Application”、 “HttpContext”、“Cache”、“Trace”、“Cookie”和“Server.MapPath”:1、Request,表示客户端发出的HTTP请求;2、Response:表示Web服务器返回给客户端的HTTP响应等等。
