php基础:面向对象
一、public、private、protected访问修饰符
public:任何都可以访问(本类、子类、外部都可以访问)
protected:本类、子类都可以访问(本类、子类均可访问)
private:本类可以访问,其他均不可访问
二、构造函数、析构函数
1. __construce()
2. __destruct():注销一个对象
三、接口interface
接口:php类是单继承的,不支持多继承,当一个类需要多个类的功能时,php类就无能为力,所以引入接口;什么是接口:如果一个抽象类里边的所有方法都是抽象方法,并且所有方法声明的关键字都是public,并且没有声明变量,这种类就是抽象类
关键字:interface来定义接口,使用implemens来实现接口的方法,必须全部实现
三、instanceof检查"是一"关系,如下代码:
<?php
interface ExampleInterface
{
public function interfaceMethod(); public function play();
} class ExampleClass implements ExampleInterface
{
public function interfaceMethod()
{
return 'Hello World!';
} public function play()
{
return 'This is a num';
}
} $exampleInstance = new ExampleClass(); if($exampleInstance instanceof ExampleInterface){
echo 'Yes, it is';
}else{
echo 'No, it is not';
}
以上代码输出的结果是:Yes, it is,为什么呢?ExampleClass它使用了关键字implements实现了ExampleInterface,所有他们是"是一"关系
四、final关键字
1.允许你用来标记方法,但是不能被子类重载(就是说再子类中不能重新书写标记final的方法)
class TestClass
{
final function play()
{
return 'This is a num';
}
} class TestTwo extends TestClass
{
public function play()
{
return 'This is a 222222';
}
} $test = new TestTwo();
echo $test->play();
上边代码提示:Fatal error: Cannot override final method TestClass::play()
2.final用来标记一个类时,该类就不能被继承
五、clone:克隆对象,在使用对象的时候开业克隆一个
六、const 关键字声明类的常量(调用时不需要实例化对象,直接调用):
<?php
class TestClass
{
const NAME = 'zgw2014';
const AGE = 'zgw2014';
} echo TestClass::AGE;
七:静态属性关键字:static
1.静态方法:
class TestClass
{
static function helloworld()
{
return '哈哈哈哈哈哈';
}
} echo TestClass::helloworld();
2. 静态成员,类的定义包含现静态成员属性,开业通过类自身访问,不需要实例化对象,;通常用的最多的就是单利模式(单件模式)
class TestClass
{
static private $instance = NULL; static public function getInstance()
{
if(self::$instance == NULL)
{
self::$instance = new DB();
} return self::$instance;
}
} class DB
{
public function play()
{
return '单利';
}
} $obj = TestClass::getInstance();
echo $obj->play();
八:抽象类abstract
1.抽象类:把类声明成为一个抽象类,可以防止被实例化,但是你可以继承一个抽象类
abstract class TestClass
{
public function getInstance()
{
return 'get getInstance';
}
} $obj = new TestClass();
echo $obj->getInstance();
上边的代码运行会提示:Fatal error: Uncaught Error: Cannot instantiate abstract class TestClass
2.抽象方法:定义一个抽象方法以便在子类中再取重新定义实现,包含有抽象方法的类本身必须是抽象类
九 、自动加载:__autoload
function __autoload($className)
{
$classPath = './'.$className.'.php';
if(file_exists($classPath))
{
require_once $classPath;
}else{
echo 'class file'.$classPath.'not found!';;
}
} $obj1 = new ClassA();
$obj2 = new ClassB();
上边代码的前提是在你设置的class路径里边必须有你实例化的类名的同名文件才行,也就是实例对象的文件名和类名一致才行
十、异常捕获机制 try{}catch(){}
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
throw new Exception($errno.'###'.$errstr.'###'.$errfile.'###'.$errline, 1);
}
set_error_handler('myErrorHandler');
try{
$db = new mysqli('localhost','root','1111');
var_dump($db);
}catch(Exception $e){
echo $e->getMessage();
}
以上代码 设置用户自定义的错误处理函数
小技巧:
1.开启php的短标签:short_open_tag = On (开启后可以使用<? 代替<?php)
2.php的三种注释:
c语言注释:/***/
c++注释://
shell注释:#
3.
php基础:面向对象的更多相关文章
- C#基础-----面向对象
C#基础-----面向对象(一) 分类: C#基础2015-06-08 14:10 2人阅读 评论(0) 收藏 举报 1,面向对象 什么是面向对象?一个分析问题的方式(增强了程序的可扩展性) 几个名词 ...
- python基础——面向对象编程
python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- java基础面向对象之类与对象
java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...
- python基础——面向对象进阶下
python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...
- python基础——面向对象进阶
python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...
- python基础——面向对象的程序设计
python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...
- 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...
- 第二十五节:Java语言基础-面向对象基础
面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基 ...
- Java基础-面向对象第三大特性之多态(polymorphism)
Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...
- Java基础-面向对象第二特征之继承(Inheritance)
Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
随机推荐
- 配置OpenGL的开发环境
OpenGL库资源下载 http://pan.baidu.com/s/1ntVsReL 环境搭建 将下载好的文件进行解压,可以得到后缀为.h..lib..dll三类文件,对这三类文件作如下处理: 将所 ...
- $.ajax的一般用法
$.post.$.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax() 一.$.ajax的一般格式 $.ajax({ type: 'POST', url: url , ...
- Linux 权限修改
chown -R 用户名:组名 文件夹名chown -R xu:hadoop hadoop 将hadoop目录(以及其下的所有子目录/文件)的属主用户设为xu, xu 的组名为group
- [转]各种编码ANSI、GB2312、GBK、GB18030、UNICODE以及UTF-8傻傻分不清!
计算机编程中的编码一直是让新手非常头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚,看一遍貌似懂了,但实际使用的时候又 ...
- work,i/o最小线程设置
设置work i/o最小线程有两种方式1.通过配置文件设置,影响所有iis部署程序(待验证)2.通过程序代码设置,iis上部署的程序互不影响int minWorker, minIOC; //Get t ...
- Ubuntu 14.04 设置Android开发环境
准备Java环境 本文仅仅安装sdk,不安装什么IDE,由于我仅仅须要命令行模式开发就可以. 首先安装openjdk 1.6.然后安装ant.这个不赘述. 下载SDK 从这里下载SDK for Lin ...
- POJ 2392 Space Elevator(多重背包变形)
Q: 额外添加了最大高度限制, 需要根据 alt 对数据进行预处理么? A: 是的, 需要根据 alt 对数组排序 Description The cows are going to space! T ...
- POJ 1141 Brackets Sequence(区间DP, DP打印路径)
Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...
- /var/log/cron
/var/log/cron 用来记录任务计划的运行日志,如下,分别表示: 任务运行的日期与时间 .在哪台主机上运行 .运行任务的程序[进程号] .任务运行的具体信息 [root@localhost ~ ...
- Python cookielib 模块
什么是 cookie : 指某些网站为了辨别用户身份,进行 session 跟踪而储存在用户本地终端上的数据,通常以 txt 文件形式存储.比如你登录了淘宝,浏览器就会保存 cookie 信息,这样我 ...