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) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
随机推荐
- cutadapt 的安装与使用
cutadapt 是一款质量过滤的软件, 它可以删除adapter, primer. polyA尾等序列:也可以用来去除低质量序列 源代码: https://github.com/marcelm/cu ...
- 10种canvas鼠标光标动画特效
来源:http://www.sucaihuo.com/js/1780.html demo:http://www.sucaihuo.com/jquery/17/1780/demo/
- linux中,通过crontab -e编辑生成的定时任务,写在哪个文件中
环境描述: 操作系统:Red Hat Enterprise Linux Server release 6.6 (Santiago) 内核版本:2.6.32-504.el6.x86_64 需求描述: 一 ...
- c# 以二进制读取文本文件
using System; using System.IO; public class FileApp { public static void Main() { // ...
- CentOS6.4环境下布署LVS+keepalived笔记
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://400053.blog.51cto.com/390053/713566 环境: 1 ...
- html的初识
今天我们学习了Html语言,感觉学习这个是我期望很久的啦,之前在百度上面也看过html教程,但是看过之后也忘记啦,太多需要记忆的,所以也没记得什么啦.甚是遗憾啊,总感觉html需要学习好多东西啦的,但 ...
- Discuz 模板标签说明
Discuz 模板标签说明 Discuz! 的模板采用近似 PHP 表达式的语法,基本都是可识别的HTML,但涉及到变量和动态内容时,基本形式下: <!-{ 代码内容 }-> 逻辑元素包围 ...
- codeblocks中cocos2dx项目添加新的.cpp和.h文件后编译运行的方法
新建了cocos2dx项目后(比如我这里建立的项目名为Test01),项目目录下有如下目录和文件: bin CMakeLists.txt MyGame.layout proj.win10 Classe ...
- Android 使用GridView以表格的形式显示多张图片
GridView用于在界面上按行.列分布的方式来显示多个组件(而ListView只是以按行的方式) 课程目标 学会使用GridView制作二维布局界面(行.列分布) 数据源(集合) --> 适配 ...
- 浅谈MVC和MVVM模式
MVC I’m dating with a model… and a view, and a controller. 众所周知,MVC 是开发客户端最经典的设计模式,iOS 开发也不例外,但是 MVC ...