当new一个对象时,如 $city = new City();【new City()称为对象】此时计算机1.调用可能存在的构造;2.划分内存区域;3.地址赋值给变量;
判断函数在类当中存在:
public function __set($name,$value){
if(property_exists($this,$name)){
$this->$name = $value;}else{
echo '没有名称为'.$name.'的属性存在<br>'}
}
判断数组当中的下标是否存在:array_key_exists($name,$this->arr)
引入文件的方式:
include include_once require require_once
面向对象:认识事物的方式或方法 ——类比。
面向对象包含“类”和“对象”。
“类”分为——》1.抽象:包括【1.外观===》属性 2.做的事===》行为】
||
||
2.实例化
默认情况下的是缺少了该属性或行为则类别就无法确定。
对象:object===》物质、物体
构造函数:
构造函数方法又称为构造函数,是对象被创建时自动调用的方法,用来完成类初始化的工作。
publicc function_construct(){}
特点:
1.特殊的名称:_construct ;
2.实例化对象时,自动被调用;
3.在内存中划分了对应的内存空间区域;
4.构造方法可以像普通方法一样,接收函数,这里的参数通常是用来初始化类中的属性;
5.构造方法不能重复定义,每个类当中有且只有一个;如果不写相当于有一个默认的不带参数且没有任何执行语句的空函数
析构函数:当某个对象成为垃圾或者当对象被显示销毁时执行。
publicc function_destruct(){}
析构函数:当类的对象被销毁时,自动调用
特点:
1.作用与构造函数相反,它是用来销毁对象的,同时,它也会用于有关联的数据的同步销毁;
2.同样,析构函数也是自动被调用;
GC(Garbage Collector)
访问常量或子类都可以用两个冒号 ::
父类的析构都被继承
OOA:分析 OOD:设计 OOP:编程
面向对象的三大特征:封装、继承、多态
封装:就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节。
优点:信息隐蔽,封装即隐藏,隐藏被修改的能力。
****实现封装:访问修饰符、函数方法、类、文件、文件夹、
目的:不能让别人随意地修改
三个访问修饰符:(如果没写,则默认public)
public 公共的 谁都可以用和修改
protect 受保护的 只有自己和后代(子类)可以使用和修改
private 私有的 只有自己可以使用和修改
继承:扩展父类内容,注意只能继承public和protect修饰的内容,而private修饰的则不可继承。
关键字:extends
PHP中继承是单继承,即extends后边只能有一个类名,但是1个类可以有无数个子类;
继承而产生的类叫子类。
被继承的类,叫做父类,也被称为超类。一个类只可以继承一个父类,但一个父类却可以被多个子类继承。
特点:子类和父类只能出现在有继承关系的2个类之间
在子类中哪些内容可以直接访问到:public
多态:变化的形态,类型会转变
包括:抽象abstract和
接口===》实现implements
面向对象编程——接口 interface;
1.接口(interface):是抽象方法和静态常量定义的集合;
抽象方法没有函数体。
2.接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量;
3.instanceof 运算符,它用于判断某个参数对象是否属于某个类;
4.在接口中的抽象方法只能是public的,默认也是public权限。并且不能设置成private或者protect类型;
5.实现接口:implements eg:class A implements B{}
6.使用逗号分开多个接口;
7.接口:它是一个特殊的类,但是名称变成了interface;
8.在接口中定义的只能是公共的抽象方法(没有函数体部分),也可以静态常量
9.接口采用的插件配置,可以随意的匹配给任意一个类
10.类可以实现(implements)接口,类实现的接口可以有无数个
11.当一个类实现了接口后,该接口的所有的方法必须在该类中实现
12.作用:行为的规范,在基础之上的扩展
面向对象编程——抽象 final static
1.final 关键字,意思是终态的、最后的,它可以修饰函数方法,被修饰的函数方法不能被重写
2.final可以修饰类class,但是被修饰的类不能被继承,类当中的属性不能被final修饰
3.static 静态的,它可以修饰属性变量,也可以修饰函数方法
4.在非静态方法中可以调用静态方法,但反过来就不行
5.静态static修饰的内容被创建不需要有对象存在,同时它们是被放置在静态区当中,非静态资源要先new,才能在内存中有位置。
6.静态资源的标准访问方式是====》类名:静态资源名称
7.this ——调用类的属性和行为 当前类的对象
parent:: ——在子类中调用父类的同名方法 (:: 称为域作用符)
self ——调用类自身的内容,常用静态方法,也可调用常量
面向对象——重写
1.在子类中出现和父类同名的方法
2.行为的重新定义
3.重写只能发生在有继承关系的类之间,方法名称相同,与参数没有关系
4.重写时,访问修饰符的范围不能低于父类中的访问修饰符
5.对于private修饰的方法不能重写
面向对象编程——this、parent
method_exits——检查类的方法是否存在
call_user_func——查询函数是否存在
php的魔术方法,及每个魔术方法的作用
定义:所有以两个下划线开头的类方法,被称为"魔术方法"(Magic methods)。
1.__construct()
实例化对象时被调用,
当__construct和以类名为函数名的函数同时存在时, __construct将被调用,另一个不被调用。
2.__destruct()
当删除一个对象或对象操作终止时被调用。
3.__call()
对象调用某个方法,
4.__get()
读取一个对象的属性时,
5.__set()
设置一个对象的属性时,
6.__isset()
检测一个对象的属性是否存在时被调用。如:isset($c->name)。
7.__unset()
删除某个变量
unset一个对象的属性时被调用。如:unset($c->name)。
8.__autoload()
实例化一个对象时,如果对应的类不存在,则该方法被调用。
php的异常
什么是异常?——运行时、编写时 错误
概念:在指定的错误(异常)情况发生时改变脚本的正常流程。
1.异常处理:对于可能出现问题的代码内容作出处理。
2.异常处理操作: try...catch..代码块。
3.try 当中包含可能出现问题的代码,而用catch来对出现的异常进行捕获。
4.一旦有定义好的异常出现,要么在该异常后的语句被跳过不再执行,而去执行输出catch块中的代码。
5.在php中,判断是否正确返回或者捕获到需要的对象或数值,如果没有,则使用throw关键字,抛出异常信息。
当异常被触发时,通常会发生:
1.当前代码状态被保存
2.代码执行被切换到预定义的异常处理器函数
3.处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本
require_once 和include_once的区别??
批量加载:__autoload()
include_once —— 如果没有对应文件,只是发出错误警告而后面的代码正确执行
require_once —— 如果没有对应文件,发出错误提示后并终止程序
调用当前类中的静态方法用——self::类名字符串(参数);
判断类当中是否包含某个指定名称的非静态函数方法 ——method_exists
sleep 方法常用于提交未提交的数据,或类似的清理操作
《如果需要在PHP页面设置错误信息不显示》
关闭错误提示信息:
1.@ 符号
2.在你PHP的最上方写上:error_reporting(E_ALL);
3.display_errors = off/on 关闭/打开错误提示信息
命名空间
namespace关键字 和__NAMESPACE__常量
命名空间是一种封装事物的方法。
namespace在所有的执行代码之前就得用上,否则会报错。
作用:分离可能存在的同名的类
1.要创建某个命名空间下的类的对象,必须写出完整的路径
2.命名空间namespace + 空间名称
数据库的标准操作步骤?
1.建立数据库连接
2.(打开数据库连接) 选择db,设置字符集
3.(建立数据库命令) 组装sql并发送
4.(运行数据库命令) 接收并处理
5.(保存数据库命令)
6.关闭数据库连接
PDO包含的常规属性和函数方法?
概念:PDO是PHP的一个扩展,PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层。
new PDO('数据库连接访问字符,'登录用户名,'登录密码','访问的相关参数')
mysql:databasename=test;port=3306;host=localhost;charset=utf8
函数方法:
1.PDO->__construct() — 建立一个PDO链接数据库的实例
2.PDO->exec() — 处理一条SQL语句,并返回所影响的条目数,专用于DML语句
3.PDO->prepare() — 处理一条SQL语句,并返回一个“PDOStatement”对象
4.PDO->query() — 处理一条SQL语句,并返回一个“PDOStatement”对象
5.PDO->excute() — 执行预处理过的语句
6.PDO->quote() — 为某个SQL中的字符串添加引号
PDO语句对象类
PDOStatement::fetchObject 返回对象,对应的类名是stdclass,如果不写则应有对应
PDOStatement::fetch()是从结果集中获取下一行,返回一维数组。
PDOStatement::fetchAll()是返回一个包含结果集中所有行的二维数组。
PDO对象和对象包含的函数?
prepare需要一个pdo对象,然后通过prepare把sql装载进去,此时并没有执行sql,而仅仅是预装载sql。
query是直接执行了sql语句,并返回一个结果集对象。
模板引擎
概念:模板引擎是为了使用户界面与业务数据分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
模板引擎不属于特定技术领域,它是跨领域跨平台的概念。在PHP下有模板引擎,在C#,甚至JavaScript、WinForm下也有。
类别:“置换型”、“解释型”和“编译型”模板引擎。
作用——(1)分离(2)分工
模板文件夹、模板转换后的文件夹、插件库、配置文件、缓存文件
常见的标签标记: <{}>、 {if}......{/if}、 <{foreach}> <{foreachelse}> <{/foreach}>、 assign()将数据打包发送、
display()
1.模板引擎分离程序逻辑代码
2.模板引擎不只是可以实现代码分离(业务逻辑代码和用户界面代码),也可以实现数据分离(动态数据与静态数据),还可以实现代码单元共享(代码重用)。
Smarty
Smarty是一个使用PHP写出来的模板引擎。
目的:就是要使PHP程序员同美工(前端人员)分离,使程序员改变程序的逻辑内容时不会影响到美工(前端人员)的页面设计,美工(前端人员)重新修改页面不会影响到程序的程序逻辑。
优点
1. 速度快
2. 编译型
3. 缓存技术:它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,
4. 插件技术:Smarty可以自定义插件(函数)。
5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
不适合使用Smarty的地方:
1.需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty会使模板处理速度变慢。
2.小项目。 小项目因为项目简单而美工与程序员兼于一人的项目,使用Smarty会在一定程度上丧失PHP开发迅速的优点。
多行注释: {* 注释内容 *}