php.ini开启命名空间,Zend Framework教程之模型Model基本规则和使用方法

本文实例讲述了Zend Framework教程之模型Model基本规则和使用方法。分享给大家供大家参考,具体如下:

这里讲讲Zend中的model。其实Zend中的Model处理是相当简单的。

这主要得益于autoload功能。不像其它框架,为model定义复杂的基类。

如果要定义model,不得不要继承一个model的基类,才可以使用具体的功能。

Zend中并没有对模型进行封装。

原因大概是Model主要是和具体业务逻辑相关的,进行过多的封装,只会画蛇添足。

Zend使用了autoload和namespace功能,很委婉的解决了这个问题。

创建一个zendframework项目model_demo1

为了方便查看错误我们可以在配置文件中/model_demo1/application/configs/application.ini打开错误信息开关如下:

接下来简单的讲讲zend中的model:

1.默认的Model

一个标准的webapp中会有application/models这样的目录。不难看出,models用来存放你的app的model

这个目录的强大之处在于,如果你在models目录中定义了具体的class。zend会自动的帮我们加载,当然要遵循一定的约定,前提是:

例如,用zf命令行创建一个名为Test的Model

Creating a model at /www/model_demo1/application/models/Test.php

Updating project profile '/www/model_demo1/.zfproject.xml'

刷新一下项目目录可以看到,新增了如下文件/model_demo1/application/models/Test.php

文件内容如下:

不难看出我们要使用Model要遵循如下规则:

1).以Application_Model_开头,然后后面是自定义的model的类名称。

即:我们web应用的model的目录结构为/model_demo1/application/models/Test.php

对应的命名空间为Application_Model_Test。

application对应Application

models对应models

Test是model的类文件的名称。

类的名称按照约束就是:class Application_Model_Test {

也不难理解Application_Model_,这样的规则遵循zend framework的autoload和namespace的约定。

2).Application命名空间

其实Application也是我们在配置文件中配置的应用的命名空间。

如果把配置文件的appnamespace = "Application"修改为appnamespace = "App"。

我们原先的程序,就会报错了。原因不言而喻。所以zend也没有那么智能。

如果要详细追究其原理,大概是如下的类完成这个功能的:

2.自定义命名空间

Zend是默认的命名空间。例如在/model_demo1/library/Zend/Test.php创建类Zend_Test

不需要做任何操作,就可以在程序中使用。例如:Zend_Test::echoZendTest();

这里简单说明自定义命名空间的两种方法:

1).使用application.ini配置文件

默认命名空间

自定义命名空间

或者

具体实现类为:Zend\Application.php

2).在Bootstrap.php文件中

例如/model_demo1/application/Bootstrap.php

/model_demo1/library/AppTest/Test.php

/model_demo1/application/controllers/IndexController.php

3).使用具体的类完成自动加载

/model_demo1/application/models/ModelTest.php

/model_demo1/library/AppTest2/Test.php

希望本文所述对大家PHP程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1618. 找出适应屏幕的最大字号(二分查找)

文章目录1. 题目2. 解题1. 题目 给定一个字符串 text。并能够在 宽为 w 高为 h 的屏幕上显示该文本。 字体数组中包含按升序排列的可用字号,您可以从该数组中选择任何字体大小。 您可以使用FontInfo接口来获取任何可用字体大小的任何字符的宽度和高度。 FontInf…

UML类图画法及类之间几种关系

文章目录如下: 一、类图画法 二、类之间的几种关系:泛化(Generalization)、实现(Realization)、关联(Association)(又分一般关联、聚合(Aggregation&#xff…

web前端知识点太多_web前端常见知识点

csstable布局的缺点1、Table要比其它html标记占更多的字节。(延迟下载时间,占用服务器更多的流量资源。)2、Tablle会阻挡浏览器渲染引擎的渲染顺序。(会延迟页面的生成速度,让用户等待更久的时间。)3、Table里显示图片时需要你把单个、有逻辑性的图片切成…

python可变参数教学,Python函数可变参数详解

在实际使用函数时,可能会遇到“不知道函数需要接受多少个实参”的情况,不过好在 Python 允许函数从调用语句中收集任意数量的实参。例如,设计一个制作披萨的函数,我们知道,披萨中可以放置很多种配料,但无法…

LeetCode 1634. 求两个多项式链表的和

文章目录1. 题目2. 解题1. 题目 多项式链表是一种特殊形式的链表,每个节点表示多项式的一项。 每个节点有三个属性: coefficient:该项的系数。项 9x4 的系数是 9 。power:该项的指数。项 9x4 的指数是 4 。next:指向…

进制A~Z,全字母26进制转化

public String to26( int x ) { StringBuffer sBuffer new StringBuffer(); int cur; x; while( x > 0 ) { sBuffer.append((char)( (( cur x % 26 ) 0 ? 25 : cur - 1) A) );x / 26; if( cur 0 ) x--; } sBuffer.reverse(); return sB uffer.toString(); } private …

es6 类的私有属性_JavaScript ES6类中的私有属性

要扩展loganfsmyth的回答:JavaScript中唯一真正私有的数据仍然是作用域变量。不能以与公共属性相同的方式在内部访问私有属性,但是可以使用范围变量来存储私有数据。作用域变量这里的方法是使用构造函数的作用域(它是私有的)来存储私有数据。要使方法能够…

python编程制作接金币游戏,闪电侠接金币的FlashMan类

python the Flash man catch coin gif animation闪电侠是美剧,这里是一个小游戏,操作闪电侠接不断冒出来的金币。本模块定义了FlashMan类。这个模块能单独运行,运行后用鼠标操作闪电侠移动即可。以下是部分代码预览:""&…

LeetCode 1660. 纠正二叉树(BFS)

文章目录1. 题目2. 解题1. 题目 你有一棵二叉树,这棵二叉树有个小问题,其中有且只有一个无效节点,它的右子节点错误地指向了与其在同一层且在其右侧的一个其他节点。 给定一棵这样的问题二叉树的根节点 root ,将该无效节点及其所…

MS SQL Server 常用操作

以下为常用: --发邮件应该很常用吧 exec msdb.dbo.sp_send_dbmailprofile_name mail_profile, --邮件配置主档,通过数据库邮件配置向导生成,一般叫dba_profile,详细看下图recipients email_recipients, --地址,多个用英文逗号隔…

arduino yun 京东_Arduino发布多款全新升级产品,宣布将成立Arduino基金会

上海2015年10月23日电 /美通社/ -- 10月18日上午,全球知名开源硬件供应商 Arduino 全球首席执行官 Federico Musto 现身上海创客嘉年华发表演讲。演讲中 Federico 发布了 Arduino Uno Pro、Arduino M0 S、 Arduino Leonardo XS、 Arduino Uno XS 以及机械手臂套件 B…

php 检测编码函数,自己写了一个php检测文件编码的函数

关于文件编码的检测,百度一下一大把都是,但是确实没有能用的、很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出、看到有人写了个增强版,用 BOM 判断的,我果断就无视了&#xff0c…

LeetCode 1730. 获取食物的最短路径(BFS)

文章目录1. 题目2. 解题1. 题目 你现在很饿,想要尽快找东西吃。你需要找到最短的路径到达一个食物所在的格子。 给定一个 m x n 的字符矩阵 grid ,包含下列不同类型的格子: * 是你的位置。矩阵中有且只有一个 * 格子。 # 是食物。矩阵中可…

python线程任务run_python线程、进程知识梳理

一.python线程线程用于提供线程相关的操作,线程是应用程序中工作的最小单元。#!/ usr / bin / env python# - * - coding:utf-8 - * -import threadingimport timedef show(arg):time.sleep(1)printthread …

jrtplib使用注意事项

一、说明 RTP 现在的问题是要解决的流媒体的实时传输的问题的最佳方法。和JRTPLIB 是一个用C语言实现的RTP库。包含UDP通讯。刚使用JRTPLIB,对JRTPLIB的理解还不够深,当做使用时,积累的一些经验写个笔记吧。 二、RTP协议 实时传送协议&#x…

oracle字符串使用函数,Oracle常用函数介绍之一(字符串)

最近工作需要从Excel 导入一些数据,由于源数据的不规范,需要进行数据的清洗工作,需要自己把耽误多日的Oracle 函数重新巩固一下。搜集了一些网络资料,整理下来,以供自己以后查对。1. ASCII返回与指定的字符对应的十进制…

JAVA中获得一个月最大天数的方法(备忘)

Calendar 类是一个抽象类,为日历字段之间的转换提供了一些方法。其中有一个重要方法 getActualMaximum ,该方法用于返回指定日历字段实际的最大值。 利用这个方法(Calendar.getActualMaximum),我们可以获得某年某月的天数。 代码如下&#xf…

LeetCode 1874. 两个数组的最小乘积和

文章目录1. 题目2. 解题1. 题目 给定两个长度相等的数组a和b&#xff0c;它们的乘积和为数组中所有的a[i] * b[i]之和&#xff0c;其中 0 < i < a.length。 比如a [1,2,3,4]&#xff0c;b [5,2,3,1]时&#xff0c;它们的乘积和为 1*5 2*2 3*3 4*1 22 现有两个长…

eplise怎么连接数据库_eclipse连接mysql

JDBC代表Java数据库连接(Java Database Connectivity)&#xff0c;它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API&#xff0c;换句话说&#xff1a;JDBC是用于在Java语言编程中与数据库连接的API。到www.mvnrepository.com网站中&#xff0c;搜索mysql&…

【NS2】在linux下安装低版本GGC

1、下载安装包&#xff0c;cd到文件所在目录 sudo dpkg -i gcc41-compat-4.1.2-ubuntu1210_i386.deb g41-compat-4.1.2_i386.deb 2、查看安装到系统的gcc ls /usr/bin/gcc* 3、 下载完包之后&#xff0c;建议是直接sudo dkpg -i *.deb这样安装 由于gcc安装互相有版本的支持&…