面向对象常用代码

类定义:class关键字

访问控制修饰符:(public|protected|private)

类的实例化:关键字new

访问属性:对象变量->属性名(属性名不能有$符号)

调用方法:对象变量->方法名()(这里的小括号不能省略)

$this关键字

PHP会自动的调用:__construct();

析构方法:__destruct();

删除一个对象:unset(对象变量);

对象的克隆:新对象 = clone 已有的对象;__clone方法

instanceof运算符:

对象变量  instanceof 类名;

作用:判断一个对象是否为某一个类的一个实例,返回布尔值。

静态变量:使用关键字static

静态变量访问的语法形式为:类名::静态属性名

在某个类的内部,访问静态成员:使用关键字self来代替当前的类名

无论采用什么方式调用静态方法,里面都不可以使用$this关键字,因为$this本身就体现了各个对象“独自”占用方法的含义! 要想使用$this关键字,只能调用非静态方法!

类常量(类常量需要找到类才能访问)

语法定义:const 常量名=值;

访问语法形式:类名::常量名

类文件的自动加载机制

类文件的自动加载__autoload();

注册自动加载方法

注册成自动加载函数:spl_autoload_register(‘函数名’);

注册非静态自动加载方法:array(对象变量,非静态方法名);

注册静态自动加载方法:array(类名,静态方法名);

注册静态自动加载方法:spl_autoload_register(‘类名::静态方法名’);

数据的序列化与反序列化

向文件写入数据:file_put_contents

从文件读取数据:file_get_contents(文件地址)

序列化:serialize(),将原始数据转换为可以用于保存和传输的字符串数据

反序列化:unserialize(),将序列化之后的字符串数据,转换为原始数据

对象的序列化与反序列化

检查文件或目录是否存在:file_exists

__PHP_incomplete_class

__sleep():

触发时机:在序列化一个对象的时候,由系统自动触发执行!

作用:该方法用于规定哪些属性需要被序列化,实现的方式为:返回一个索引数组,数组内的元素为需要被序列化的属性名的集合!

__wakeup():

触发时机:在一个对象反序列化的时候,由系统自动触发执行!

作用:在反序列化一个对象的时候,完成该对象的初始化工作!

类的继承

继承的关键字:extends

重写override

调用的方法为:父类名::父类同名方法

parent关键字

访问控制修饰符

public:公共的,当前类内,继承链类内和类外都可以被访问到,访问范围是最大的!

protected:受保护的,当前类内和继承链类内可以被访问到,类外不能访问!

private:私有的,只有当前类内可以被访问到,其他类内和类外都不能访问!\

提高MySQLDB的封装性

第一步:将相关的属性改成private

第二步:私有化相关方法

sql查询语句的结果的三种形式

多行多列:fetchAll

一行多列:fetchRow

单行单列:fetchColumn

最终类final

最终类:final类,不能被继承,只能实例化对象的类!

抽象类:abstract类,不能实例化,只能被继承的类!

最终方法:

final method,在一个方法名的前面加上final关键字,就变成了一个最终方法!从语法上规定不能被子类重写的方法。

interface接口:关键字就是interface!接口不是类,只是类的一种规范

接口:接口常量(关键字const),抽象方法(不需要使用abstract关键字);

接口的定义:interface I_自定义名字{ };

implements关键字:使该接口作用到类上面

PHP中的重载

指的是对不可访问的成员的处理方式,称之为成员的重载(包括属性重载和方法重载)

为不可访问的属性赋值的时候 __set()

触发时机:为一个不可访问的属性赋值的时候!

作用:系统默认的是行为是允许将一个不存在的属性重新载入到一个类的内部,但是,一旦定义了__set()这个魔术方法,处理权就交给用户自己了!

获得不可访问的属性的值的时候 __get()

触发时机:当获取一个不可访问的属性的值的时候!

作用:系统默认的是行为是报告一个Notice级别的错误,但是,一旦定义了__get()这个魔术方法,处理权就交给用户自己了!

删除不可访问的属性的时候 __unset()

触发时机:删除一个不可访问的属性的时候

作用:系统默认的行为是报错,如果加入了__unset方法,此时决定权就在用户自己了!

判断不可访问的属性是否存在的时候   __isset()

触发时机:当判断一个不可访问的成员是否存在的时候

作用:系统默认的行为是返回false,但是一旦加入了__isset魔术方法,决定权又交给用户了!

方法重载

__call():

触发时机:当调用一个不可访问的非静态方法(对象方法)的时候,会自动执行该魔术方法!

__callstatic():

触发时机:当访问一个不可访问的静态方法的时候,会自动执行该方法!注意:需要在该方法的前面加上static关键字!

魔术方法和相关的魔术常量

__invoke()

触发时机:当把对象当做一个函数或方法来调用的时候,会自动执行该魔术方法!目前用的不是太多!

__toString()

触发时机:将一个对象当做一个字符串来使用的时候,会自动触发该方法!

单例模式(“三私一公”)

1、 增加用于保存对象的私有静态属性

2、 把构造方法私有化

3、 增加一个可以获得单例的公共方法

4、 将__clone私有化

工厂模式

MySQLDB的属性重载

1、__unset什么都不做!

2、__isset只给用户查询一些设置的连接属性

3、__get中只给用户看一些用户连接的信息

4、__set中也只给用户设置一些基本连接信息

自定义遍历

初始化指针、判断指针是否合法、获取值、获取键、移动指针

类和对象的相关函数

class_exists()

判断一个类是否存在

需要一个参数就是类名!

interface_exists()

判断一个接口是否存在,也需要一个参数是,接口的名字!

method_exists()

判断一个方法是否存在!

get_class()

获得该对象所属的类!

get_parent_class()

获得该对象所属的父类!如果该对象没有父类,就返回false!

get_class_methods()

需要一个参数,就是某个类名!

返回一个索引数组,里面的元素就是该类的方法的名字!

get_class_vars()

需要一个参数,就是某个类名!

返回一个索引数组,里面的元素就是该类的属性的名字!

公开的静态方法和非静态方法都可以获取到,但是受访问控制的限制!

is_object

判断某个变量是否为一个对象!

命名空间初步

关键字namespace

空间的定义

namespace 空间名字;(进入到某个空间的语法和定义一个空间的语法是一样的)

空间成员的概念

命名空间本身只“管辖三种成员:常量、函数和类!

PHP提供了三种访问空间成员的方式:

1、非限定名称访问

2、限定名称访问

3、完全限定名称访问

空间引入和空间类的引入

空间类的引入

第一种:就是使用完全限定名称访问就行了!

第二种:把First空间里面的Student类引入到当前空间(Second空间)

把其他命名空间的类引入到当前空间的语法形式为:

use 空间名\类名

时间: 2024-12-09 23:15:24

面向对象常用代码的相关文章

第9篇-JAVA面向对象-常用类Ⅴ

第9篇-JAVA面向对象-常用类Ⅴ 每篇一句 :巨轮寻深水而航行 初学心得: 没有胆大的猜测就没有伟大的发现 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-13| JAVA面向对象 Ⅴ] 1.JAVA Scanner类 java.util.Scanner 是 Java5 的新特征,读者可以通过 Scanner 类来获取用户的输入 创建 Scanner 对象的基本语法格式: Scanner s = new Scanner(System.in); 使用 next 方法代码: 1

如何编写可维护的面向对象JavaScript代码

能够写出可维护的面向对象JavaScript代 码不仅可以节约金钱,还能让你很受欢迎.不信?有可能你自己或者其他什么人有一天会回来重用你的代码.如果能尽量让这个经历不那么痛苦,就可以节省不少时 间.地球人都知道,时间就是金钱.同样的,你也会因为帮某人省去了头疼的过程而获得他的偏爱.但是,在开始探索如何编写可维护的面向对象JavaScript代码之前,我们先来快速看看什么是面向对象.如果已经了解面向对象的概念了,就可以直接跳过下一节. 什么是面向对象?  面向对象编程主要通过代码代表现实世界中的实

常用代码整理(重要)

常用代码整理: 1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATC

HTML入门常用代码

Html 常用代码1.文件类型<HTML></HTML> (放在档案的开头与结尾)2.文件主题<TITLE></TITLE> (必须放在「文头」区块内)3.文头<HEAD></HEAD> (描述性资料,像是「主题」)4.文体<BODY></BODY> (文件本体)5.层<DIV></DIV> 6.层的对齐<DIV ALIGN=LEFT|RIGHT|CENTER|JUSTIFY>

SqlServerDBA 常用代码

--查看partition的四个视图 select * from sys.partition_functions--查看分区函数 select * from sys.partition_parameters select * from sys.partition_range_values--查看分区函数对应的分区范围 select * from sys.partition_schemes--查看分区架构 SqlServerDBA 常用代码,布布扣,bubuko.com

ASP.NET MVC+EF5 开发常用代码

Asp.Net Mvc,EF 技术常用点总结 1.Asp.Net MVC a)获得当前控制器名和当前操作的名称(action) 1.Action 中 RouteData.Values["controller"].ToString(); RouteData.Values["action"].ToString(); 2.页面中(view) ViewContext.RouteData.Values["controller"].ToString().To

js常用代码大全

Javascript常用代码大全 //打开模式对话框 <body><script language=javascript> function doSelectUser(txtId){ strFeatures="dialogWidth=500px;dialogHeight=360px;center=yes;middle=yes ;help=no;status=no;scroll=no"; var url,strReturn; url="selUser.a

Php mysql 常用代码、CURD操作以及简单查询

C/S:Client ServerB/S:Brower Server php主要实现B/S LAMP :Linux系统    A阿帕奇服务器    Mysql数据库   Php语言 mysql常用代码 创建表 1 create table CeShi1 2 ( 3 Uid varchar(50) primary key, 4 Pwd varchar(50), 5 Name varchar(50), 6 Nation varchar(50), 7 foreign key(Nation) refer

一些常用代码

1.地图大于屏幕大小,对camera进行控制,并不是简单地让player一直限制在屏幕中心,而是将player限制在屏幕中间的一个矩形区域内. 1 float rectangleWidth=GameVariables.WIDTH/3; 2 float rectangleHeight=GameVariables.HEIGHT/3; 3 float cameraX=stage.getCamera().position.x; 4 float cameraY=stage.getCamera().posi