Maison php教程 php手册 phpcms学习总结

phpcms学习总结

Jun 13, 2016 am 09:39 AM
aspnet programmation de logiciels

<span 文件目录结构
根目录
</span>|<span   &ndash;  api  接口文件目录
</span>|<span   &ndash;  caches 缓存文件目录
       </span>|<span   &ndash; configs 系统配置文件目录
       </span>|  &ndash; caches_*<span  系统缓存目录
</span>|<span   &ndash;  phpcms  phpcms框架主目录
       </span>|<span   &ndash; languages 框架语言包目录
       </span>|<span   &ndash; libs 框架主类库、主函数库目录
       </span>|<span   &ndash; model 框架数据库模型目录
       </span>|<span   &ndash; modules 框架模块目录
       </span>|<span   &ndash; templates 框架系统模板目录
</span>|<span   &ndash;  phpsso_server  phpsso主目录
</span>|<span   &ndash;  statics  系统附件包
       </span>|<span   &ndash; css 系统css包
       </span>|<span   &ndash; images 系统图片包
       </span>|<span   &ndash; js 系统js包
</span>|<span   &ndash;  uploadfile  网站附件目录
</span>|  &ndash;  admin.<span php  后台管理入口
</span>|  &ndash;  index.<span php  程序主入口
</span>|  &ndash;  crossdomain.<span xml  FLASH跨域传输文件
</span>|  &ndash;  robots.<span txt 搜索引擎蜘蛛限制配置文件
</span>|  &ndash;  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。
数据模型需要以&ldquo;数据表名称_model.class.php&rdquo;为形式,类名称与文件名必须相同。



配置文件调用
配置文件配置在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();
    }
    //&hellip;&hellip;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的文件夹存放模板



创建模块控制器
在创建模块中我们已经创建好了一个名为&ldquo;test&rdquo;的模块,接下来我们继续为这个模块添加两个控制器类。
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 没有填写 &ldquo;a&rdquo; 的情况下,默认调用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中方法
Copier après la connexion

 

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La combinaison de Vue.js et ASP.NET fournit des conseils et des suggestions pour l'optimisation des performances et l'expansion des applications Web. La combinaison de Vue.js et ASP.NET fournit des conseils et des suggestions pour l'optimisation des performances et l'expansion des applications Web. Jul 29, 2023 pm 05:19 PM

La combinaison de Vue.js et ASP.NET fournit des conseils et des suggestions pour l'optimisation des performances et l'expansion des applications Web. Avec le développement rapide des applications Web, l'optimisation des performances est devenue une tâche indispensable et importante pour les développeurs. En tant que framework frontal populaire, Vue.js combiné à ASP.NET peut nous aider à obtenir une meilleure optimisation et expansion des performances. Cet article présentera quelques conseils et suggestions, et fournira quelques exemples de code. 1. Réduire les requêtes HTTP Le nombre de requêtes HTTP affecte directement la vitesse de chargement des applications Web. passer

Dix façons dont l'IA générative va changer le développement logiciel Dix façons dont l'IA générative va changer le développement logiciel Mar 11, 2024 pm 12:10 PM

Traducteur | Révisé par Chen Jun | Chonglou Dans les années 1990, lorsque les gens parlaient de programmation logicielle, cela signifiait généralement choisir un éditeur, vérifier le code dans la base de code CVS ou SVN, puis compiler le code dans un fichier exécutable. Les environnements de développement intégrés (IDE) correspondants tels qu'Eclipse et Visual Studio peuvent intégrer la programmation, le développement, la documentation, la construction, les tests, le déploiement et d'autres étapes dans un cycle de vie complet de développement logiciel (SDLC), améliorant ainsi l'efficacité du travail des développeurs. Ces dernières années, les outils populaires de cloud computing et d'automatisation DevSecOps ont amélioré les capacités complètes des développeurs, permettant ainsi à un plus grand nombre d'entreprises de développer, de déployer et de maintenir plus facilement des applications logicielles. Aujourd’hui, l’IA générative est le développement de la prochaine génération

Techniques d'utilisation et d'optimisation du pool de connexions MySQL dans les programmes ASP.NET Techniques d'utilisation et d'optimisation du pool de connexions MySQL dans les programmes ASP.NET Jun 30, 2023 pm 11:54 PM

Comment utiliser et optimiser correctement le pool de connexions MySQL dans les programmes ASP.NET ? Introduction : MySQL est un système de gestion de bases de données largement utilisé qui offre des performances élevées, une fiabilité et une facilité d'utilisation. Dans le développement ASP.NET, l'utilisation d'une base de données MySQL pour le stockage des données est une exigence courante. Afin d'améliorer l'efficacité et les performances des connexions aux bases de données, nous devons utiliser et optimiser correctement le pool de connexions MySQL. Cet article explique comment utiliser et optimiser correctement le pool de connexions MySQL dans les programmes ASP.NET.

Comment se reconnecter à MySQL dans le programme ASP.NET ? Comment se reconnecter à MySQL dans le programme ASP.NET ? Jun 29, 2023 pm 02:21 PM

Comment se reconnecter à MySQL dans le programme ASP.NET ? Dans le développement ASP.NET, il est très courant d'utiliser la base de données MySQL. Cependant, pour des raisons de réseau ou de serveur de base de données, la connexion à la base de données peut parfois être interrompue ou expirer. Dans ce cas, afin de garantir la stabilité et la fiabilité du programme, nous devons rétablir la connexion après la déconnexion de la connexion. Cet article explique comment reconnecter les connexions MySQL dans les programmes ASP.NET. Pour référencer d'abord les espaces de noms nécessaires, référencez-les en tête du fichier de code

La combinaison de Vue.js et ASP.NET permet le développement et le déploiement d'applications au niveau de l'entreprise La combinaison de Vue.js et ASP.NET permet le développement et le déploiement d'applications au niveau de l'entreprise Jul 29, 2023 pm 02:37 PM

La combinaison de Vue.js et d'ASP.NET permet le développement et le déploiement d'applications au niveau de l'entreprise Dans le domaine technologique Internet en développement rapide actuel, le développement et le déploiement d'applications au niveau de l'entreprise sont devenus de plus en plus importants. Vue.js et ASP.NET sont deux technologies largement utilisées dans le développement front-end et back-end. Leur combinaison peut apporter de nombreux avantages au développement et au déploiement d'applications au niveau de l'entreprise. Cet article expliquera comment utiliser Vue.js et ASP.NET pour développer et déployer des applications au niveau de l'entreprise à travers des exemples de code. Tout d'abord, nous devons installer

Comment configurer et utiliser correctement le pool de connexions MySQL dans le programme ASP.NET ? Comment configurer et utiliser correctement le pool de connexions MySQL dans le programme ASP.NET ? Jun 29, 2023 pm 12:56 PM

Comment configurer et utiliser correctement le pool de connexions MySQL dans le programme ASP.NET ? Avec le développement d’Internet et l’augmentation du volume de données, la demande d’accès et de connexions aux bases de données augmente également. Afin d’améliorer les performances et la stabilité de la base de données, le pooling de connexions est devenu une technologie incontournable. Cet article explique principalement comment configurer et utiliser correctement le pool de connexions MySQL dans les programmes ASP.NET pour améliorer l'efficacité et la vitesse de réponse de la base de données. 1. Le concept et la fonction du pooling de connexions Le pooling de connexions est une technologie qui réutilise les connexions de bases de données. Elle est utilisée au début du programme.

Utilisation et optimisation des performances des transactions du pool de connexions MySQL dans ASP.NET Utilisation et optimisation des performances des transactions du pool de connexions MySQL dans ASP.NET Jun 30, 2023 pm 12:12 PM

Comment utiliser correctement et optimiser les performances des transactions du pool de connexions MySQL dans les programmes ASP.NET ? Dans les programmes ASP.NET, les transactions de base de données constituent une partie très importante. Les transactions garantissent la cohérence et l'intégrité de la base de données tout en offrant de meilleures performances. Lors de l'utilisation d'une base de données MySQL, il est essentiel d'utiliser un pool de connexions pour gérer les ressources de connexion et optimiser les performances. Tout d’abord, comprenons brièvement le concept de pool de connexions MySQL. Le pool de connexions est un pool tampon d'un groupe de connexions en pré-initialisant un certain nombre de connexions.

Quels sont les objets intégrés dans aspnet ? Quels sont les objets intégrés dans aspnet ? Nov 21, 2023 pm 02:59 PM

Les objets intégrés dans ASP.NET incluent "Request", "Response", "Session", "Server", "Application", "HttpContext", "Cache", "Trace", "Cookie" et "Server.MapPath" : 1. Requête, indiquant la requête HTTP émise par le client 2. Réponse : indiquant la réponse HTTP renvoyée par le serveur web au client ; client, etc

See all articles