一、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基础:面向对象的更多相关文章

  1. C#基础-----面向对象

    C#基础-----面向对象(一) 分类: C#基础2015-06-08 14:10 2人阅读 评论(0) 收藏 举报 1,面向对象 什么是面向对象?一个分析问题的方式(增强了程序的可扩展性) 几个名词 ...

  2. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  3. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  4. python基础——面向对象进阶下

    python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...

  5. python基础——面向对象进阶

    python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...

  6. python基础——面向对象的程序设计

    python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...

  7. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  8. 第二十五节:Java语言基础-面向对象基础

    面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基 ...

  9. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  10. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

随机推荐

  1. CentOS下screen 命令详解

    一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...

  2. asp.net线程批量导入数据时通过ajax获取执行状态

    最近因为工作中遇到一个需求,需要做了一个批量导入功能,但长时间运行没个反馈状态,很容易让人看了心急,产生各种臆想!为了解决心里障碍,写了这么个功能. 通过线程执行导入,并把正在执行的状态存入sessi ...

  3. Ubuntu:为 Firefox 浏览器 安装 flash 插件

    从adobe上下载浏览器flashplayer插件:推荐 x.tar.gz格式的——通用格式. 解压tar.gz后可以得到:libflashplayer.so 文件 将 libflashplayer. ...

  4. GOlang eclipse install

    http://golang.org/dl/ 下载golang https://codeload.github.com/GoClipse/goclipse/tar.gz/v0.8.1 解压 安装ecli ...

  5. 如何在ChemDraw中绘制分子立体结构

    ChemDraw是当前最常用的的化学结构绘图软件,软件功能包括化学作图.分子模型生成.化学数据库信息管理等,可以说是化学家和生物学家所需要最终极的化学结构绘图工具.本教程主要介绍ChemDraw绘制分 ...

  6. 记录下Lambda常用的表现形式

    纯粹记录下Lambda的表现形式: (x, y) => x * y;//多参数,隐式类型=>表达式 x => x * ;//单参数,隐式类型=>表达式 x => { ; ...

  7. C# 温故而知新:Stream篇(二)

    TextReader 和StreamReader 目录: 为什么要介绍 TextReader? TextReader的常用属性和方法 TextReader 示例 从StreamReader想到多态 简 ...

  8. js 对象引用传值

    1)当变量是一个对象(例如:{}或[]),使用 a = b = {} 这种形式传值的话,会变成会用传值,修改 a 时 b 会相应变化,修改 b 时 a 也一样会相应变化 var a = b = {}; ...

  9. linux命令之find和locate

    1.find / -name  log.xml   按照名字查找log.xml文件 2.locate log.xml     查找log.xml文件(效率高) 3.grep 'hive'  word. ...

  10. m4a文件在iOS上的流媒体播放

    Date: 2016-03-23 Title: m4a文件在iOS上的流媒体播放 Tags: m4a, mp4, iOS, Android URL: m4a-streaming-play-on-mob ...