这里有新鲜出炉的 PHP 面向对象编程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 PHP 面向对象程序设计方法, 结合实例形式详细分析了 php 面向对象程序设计中所涉及的类的概念、定义、构造函数、析构函数、继承、重载、接口、抽象类等概念与使用技巧, 需要的朋友可以参考下
本文实例分析了 PHP 面向对象程序设计方法。分享给大家供大家参考,具体如下:
PHP5 开始支持面向对象,示例如下:
- <?php
- class classname{
- var $attr1;
- var $attr2;
- public $attribute;
- const PI = 3.14;
- // 构造函数
- function __construct($param = 'default'){
- echo "Constructor called with parameter $param<br />";
- }
- // 析构函数
- function __destruct(){
- echo '<br />destruct';
- }
- //
- function oper1(){
- echo 'oper1<br />';
- }
- function oper2($param){
- $this->attr1 = $param;
- echo $this->attr1;
- }
- protected function oper3(){
- echo 'this is protected function<br />';
- }
- // 禁止继承
- final function oper5(){
- }
- function __get($name){
- return $this->$name;
- }
- function __set($name, $value){
- $this->$name = $value;
- }
- // 静态方法
- static function double($param){
- return $param * $param;
- }
- }
- $a = new classname('First');
- $b = new classname('Second');
- $c = new classname();
- $c->oper2("hello");
- echo '<br />';
- echo $c->attr1;
- echo '<br /><br />';
- echo ' Per-Class常量 classname::PI -'.classname::PI;
- echo '<br />静态方法: classname::double(3) - ' . classname::double(3);
- echo '<br />';
- // 实现继承
- echo '实现继承<br />';
- class B extends classname{
- function oper4(){
- $this->oper3(); // protected方法只能在
- }
- function oper1(){ // 重载
- echo 'this is class B /'s oper1. <br />';
- }
- }
- $d = new B("forth");
- $d->oper1();
- $d->oper4();
- // 接口
- interface Displayable
- {
- function display();
- function show();
- }
- class C implements Displayable
- {
- function display(){
- echo '这是对应接口的方法.<br />';
- }
- function show(){}
- }
- $e = new C();
- $e->display();
- echo '检查$e是否为C的实例:';
- echo ($e instanceof C) ? 'Yes':'No';
- // 克隆对象
- $f = clone $e;
- echo '<br /><br />可以使用__clone()方法,在使用clone关键字时调用';
- // 抽象类
- abstract class E{}
- // $f = new E(); // 这行将报错,不能实例化抽象类
- //参数重载,多态
- class F{
- public $a = 1;
- public $b = 2;
- public $c = 3;
- function displayString($elem){
- echo '<br />string:'.$elem;
- }
- function displayInt($elem){
- echo '<br />int:'.$elem;
- }
- // 注意参数$p,是作为数组传入,必须使用下标访问
- function __call($method, $p){
- if ($method == 'display'){
- if (is_string($p[0])){
- $this->displayString($p[0]);
- } else {
- $this->displayInt($p[0]);
- }
- }
- }
- }
- $g = new F();
- $g->display('abc');
- // 迭代器,读出实例的所有属性
- foreach ($g as $att){
- echo '<br />'.$att;
- }
- // 反射
- echo '<br />';
- $class = new ReflectionClass('F');
- echo '<pre>';
- echo $class;
- echo '</pre>';
- ?>
希望本文所述对大家 PHP 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0809/340801.html