php核心编程笔记源码_第1页
php核心编程笔记源码_第2页
php核心编程笔记源码_第3页
php核心编程笔记源码_第4页
php核心编程笔记源码_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主讲教师:.神龙教主学院 htt播客发布1.1顾1、clone:对象2、clone():当执行 clone 命令的时候自动调用的魔术方法3、单例模式:a)一个类只能有一个对象b) 三私一公i.私有的静态属性:保存当前类的实例ii.私有的构造方法:放在在类的外部实例化iii.私有的clone():防止在类的外部克隆对象iv.公有的静态方法:用来获取当前对象的实例4、在项目层面的单例模式:将多个单例放到一个静态数组中5、工厂模式:传递不同参数获取不同的对象6、策略模式:传递不同参数调用不同的方法7、魔术方法:a)construct():构造函数b)destruct():析构函数c)autoload

2、():当调用不存在的类的时候自动调用d)tostring():当将对象当成字符串使用的时候自动调用e)invoke():当将对象当成函数使用的时候自动调用f)set():当对无法的属性的赋值时候自动调用g)get():当对获取无法的的属性值的时候自动调用h)unset():当销毁无法的属性的时候自动调用回i)isset():当判断无法的属性是否存在的时候自动调用j)call():当调用无法的普通方法时候自动触发k)callsic():当无法通过静态方式方法时自动触发8、Iterator:(迭代器) 用来遍历对象中的数组类型的属性a)rewind():指针复位b)valid():判断指针是否合法

3、c)current():获取当前的数据d)key():获取当前键e)next():将指针下移一位9、数组(对象)序列号和反序列号a)serialize:序列化b) unserialize:反序列化10、 通过单例模式实现数据库连接1.2MVC1、MVC 是一个设计。一个项目由三部分组成a)M(M):模型层,用来操作数据的b) V(View):视图层,用来显示数据c)C(Controller):控制器层,用来执行业务逻辑的(调用数据并调用视图)2、MVC 的优点a)多人合作很方便b)代码的可重用型非常好,(增强代码的健壮性)c)项目的变得更加容易3、 MVC 的请求示意图1.3演化一DB.cla

4、ss.中,循环显示 products 表的获取商品的内容,在上一将的数据host=isset($confighost)?$confighost:;$this-port=isset($configport)?$configport:3306;$this-user=isset($configuser)?$configuser:;$this-pwd=isset($configpwd)?$configpwd:;$this-charset=isset($configcharset)?$configcharset:utf8;$this-dbname=isset($configdbname)?$config

5、dbname:;/连接数据库private function connect() $this-link=_connect($this-host:$this-port,$this-user,$this-pwd) or die(数据库连接失败);/设置字符编码private function setCharset() $sql=set names $this-charset;$this-query($sql);/选择数据库private function selectDB() $sql=use $this-dbname;$this-query($sql);/*此方法用来执行 SQL 语句*如果是数

6、据查询语句,成功返回结果集,失败返回 false*如果是数据操作语句,成功返回 true,失败返回 false;*/public function query($sql) if(!$result=_query($sql,$this-link)echoecho echoSQL 语句执行失败;错误:._errno(),;_error(),;错误信息:.echoexit;错误的 SQL 语句,$sql,;return $result;/*私有的构造函数防止在类的外部实例化对象*param $config array 连接数据库的参数*/private function construct($conf

7、ig) $this-initParam($config);$this-connect();$this-setCharset();$this-selectDB();/私有的 clone()用来是类的外部克隆对象private function clone() /*公有的静态方法用来获取*return objectDB 类的实例DB 的实例*/public sic function getInstance($config=array()if(!self:$instance instanceof self) self:$instance=new self($config);return self:$

8、instance;/*从数据库获取所有数据*param $sql string SQL 语句*param $fetch_type string assoc|row|array*return array 将表中的数据匹配成二维数组返回*/public function fetchAll($sql,$fetch_type=assoc)$rs=$this-query($sql);$fetch_types=array(assoc,row,array); if(!in_array($fetch_type,$fetch_types)$fetch_type=assoc;$fetch_fun=$array=a

9、rray();_fetch_.$fetch_type;while($rows=$fetch_fun($rs)$array=$rows;return $array;/*获取的第一条*/public function fetchRow($sql,$fetch_type=assoc)$rs=$this-fetchAll($sql,$fetch_type); return empty($rs)?null:$rs0;/*获取的第一行第一列*/public function fetchColumn($sql) $rs=$this-fetchRow($sql,row); return empty($rs)?

10、null:$rs0;/获取数据$config=array(host = user =pwd =127.0.0.1,root,aa,dbname=4);$db=DB:getInstance($config);$rs=$db-fetchAll(select * from?无标题文档table,td,thproducts);border:#000 solid1px;tablewidth:780px; margin:auto;商品名称商品规格价格库存量缩略图?$rowsproguige?$rowsproprice?$rowsproamount?暂缺:;?echo empty($rowsproweb)?

11、暂缺:$rowsproweb?1.4演化二1、将DB 类单独存放在DB.class.页面中2、新建一个 showList.html 页面,将显示数据的代码放到此文件中无标题文档 table,td,thborder:#000 solid 1px;tablewidth:780px; margin:auto;商品名称商品规格价格库存量缩略图?foreach($rs as $rows):?$rowsproname?$rowsproguige?$rowsproprice?$rowsproamount?empty($rowsproimages)?暂缺:;?3、 user =pwd =127.0.0.1,r

12、oot,aa,dbname=4);$db=DB:getInstance($config);$rs=$db-fetchAll(select * from products);1.5演化1、一个表就是一个模型类2、模型类以 M结尾,比如 Products 表对应的模型 ProductsM3、类文件以.class.结尾将对 Products 表操作的代码封装到 ProductsMinitDB();/获取DBm 类的实例private function initDB() $config=array(host = user =pwd =127.0.0.1,root,aa,dbname=4);$this-

13、db=DB:getInstance($config);/*获取 Products 表的所有商品*/public function getList() return $this-db-fetchAll(select * fromproducts);index.页面更改如下:三require ./showList.html;getList();require ./showList.html;1.6演化每个表的模型都需要连接数据库,可以将连接数据库的代码封装到所有模型类的父类中(基础模型类)基础模型类(MinitDB();/获取DBm 类的实例private function initDB() $c

14、onfig=array(host = user =pwd =127.0.0.1,root,aa,四dbname=4);$this-db=DB:getInstance($config);所有的模型都继承基础模型class ProductsM/*extends M*获取 Products 表的所有商品*/public function getList() return $this-db-fetchAll(select * fromproducts);1.7演化五1、一个模块就是一个控制器2、控制器必须以 Controller 结尾(控制器名+Controller)3、控制器中的方法名以Action

15、 结尾(方法名+Action)4、通过传递参数的方法请求分发用 c 表示控制器,a 表示方法新建一个 ProductsController.class.页面/*控制器必须以 Controller 结尾(控制器名+Controller)*方法名必须以 Action 结尾 (方法名+Action)*/class ProductsController /获取商品的所有数据public function listAction() $m=new ProductsM();$rs=$m-getList();require ./showList.html;public function addAction() require ./add.html;public function modifyAction() require ./modify.html;public function d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论