`

第19章 面向对象的工具

 
阅读更多

computer.class.php

<?php
	class Computer {
		public $_name = 'dell';
		public function _run() {
			echo '运行';
		}
	}	
?>

 

person.class.php

<?php
	class Person {
		public $_name = '人';
		public function _run() {
			echo '在走';
		}
	}	
?>

 

Demo1.php

<?php
	header ( 'Content-Type:text/html; charset=utf-8;' );
	//引入类文件即可
	///require 'computer.class.php';
	//1.如果要包含多个类文件 ,是不是要一一引入。
	//2.引入多个类文件,如果有用不到的,就会产生浪费
	//3.引入了类文件,可能会遗漏,比如,创建一个对象,而这个对象的类文件没有引入。就会产生错误
	//$_className = 类名
	//只要实例化了,那么 $_className = 'Computer';
	function __autoload($_className){
		require strtolower($_className.'.class.php');
	}
	$computer = new Computer();
	echo $computer -> _name;
	$computer -> _run();
	$person = new Person();
	echo $person -> _name;
	$person -> _run();
?>

 

Demo2.php

<?php
	header ( 'Content-Type:text/html; charset=utf-8;' );
	class Computer {
		public $_name = 'dell';
		public function _run() {
			echo '运行';
		}
		//采用__call() 方法屏蔽调用
		//__call() 里面有两个参数
		private function __call($_methodName ,$_argList){
			echo $_methodName.'()方法不存在';
			print_r($_argList);
		}
	}	
	$computer = new Computer();
	$computer -> go('Lee',213);
?>

 

Demo3.php

<?php
	header ( 'Content-Type:text/html; charset=utf-8;' );
	class Computer {
		public function _run() {
			echo '运行';
		}
		private function __toString(){
			return '我是对象的字符串';
		}
	}
	$computer = new Computer();		
	echo $computer;
?>

 

Demo4.php

<?php
	header ( 'Content-Type:text/html; charset=utf-8;' );
	class Computer {
		public $_name = 'dell';
		public function _run() {
			echo '运行';
		}
	}
	//引用传递
	$computer1 = new Computer();		
	$computer2 = $computer1;	
	$computer2 -> _name='ibm';
	echo $computer1 -> _name;
?>

 

Demo5.php

<?php
	header ( 'Content-Type:text/html; charset=utf-8;' );
	class Computer {
		public $_name = 'dell';
		public function _run() {
			echo '运行';
		}
	}
	//独立实例
	$computer1 = new Computer();		
	$computer2 = new Computer();	
	$computer2 -> _name='ibm';
	echo $computer1 -> _name;
?>

 

Demo6.php

<?php
	header ( 'Content-Type:text/html; charset=utf-8;' );
	class Computer {
		public $_name = 'dell';
		public function _run() {
			echo '运行';
		}
	}
	//克隆
	$computer1 = new Computer();
	$computer1 -> _name='ibm';		
	$computer2 = clone $computer1;
	$computer2 -> _name = '联想';
	echo $computer1 -> _name;
	echo $computer2 -> _name;
?>

 

Demo7.php

<?php
	header ( 'Content-Type:text/html; charset=utf-8;' );
	class Computer {
		public $_name = 'dell';
		public function _run() {
			echo '运行';
		}
		
		public function __clone(){
			$this->_name = '华为';
			echo '克隆了';
		}
	}
	//克隆
	$computer1 = new Computer();
	$computer2 = clone $computer1;
	echo $computer1 -> _name;
	echo $computer2 -> _name;
?>

 

Demo8.php

<?php
	header ( 'Content-Type:text/html; charset=utf-8;' );
	class Computer {
		public $_name = 'dell';
		private $_mode = 'i7';
		public function _run(){}
		private function _go(){}
	}
	class NoteComputer extends Computer {
		
	}
	interface Person {
	}
	$computer = new Computer();
	$noteComputer = new NoteComputer();
	//1.检查类是否存在
	echo class_exists('Computer');	//1
	//2.获取对象的类名
	echo get_class($computer);		//Computer
	//3.获取类中公共的方法
	//print_r(get_class_methods($computer));
	print_r(get_class_methods('Computer'));	//Array ( [0] => _run )
	//4.获取类中的字段
	print_r(get_class_vars('Computer'));	//Array ( [_name] => dell )
	//5.获取子类的父类
	//echo get_parent_class('NoteComputer');		//Computer
	echo get_parent_class($noteComputer);		//Computer
	//6.判断接口是否存在
	echo interface_exists('Person'); 	//1
	//7.判断对象是否是这个类,$noteComputer 的类是父类是 Computer
	echo is_a($noteComputer,'Computer');
	//8.判断对象是否类的子类
	echo is_subclass_of($noteComputer,'Computer');//1
	//9.判断对象是否有这个方法
	echo method_exists($computer,'_go');	//1
?>

 

Demo9.php

<?php
	header ( 'Content-Type:text/html; charset=utf-8;' );
	//反射,了解一下,入门
	//查看自定义类
	class Computer {
		public $_name = 'dell';
		private $_mode = 'i7';
		public function _run(){}
		private function _go(){}
		public static $_cpu;
		private static function tool() {}
		const PI = 3.14;
	}
	//使用反射列出他们的信息
	//输出这个信息
	Reflection::export(new ReflectionClass('Computer'));
?>

 

Demo10.php

<?php
	header ( 'Content-Type:text/html; charset=utf-8;' );
	class Computer{}
	//系统内置的类
	//Reflection::export(new ReflectionClass('DateTime'));
	$rc = new ReflectionClass('DateTime');
	echo $rc -> getName();
	echo $rc -> getFileName();
	print_r($rc -> getConstants());
?>

 

 

 

 

 

0
4
分享到:
评论

相关推荐

    面向对象软件工程

     第九章 计划与估算  第二部分 软件生命周期工作流  第十章 需求工作流  第十一章 分析工作流  第十二章 设计工作流  第十三章 实现工作流  第十四章 交付后维护  第十五章 UML的进一步讨论 这...

    Delphi面向对象程序设计课件1-13章打包(含源代码).zip

    第三章Delphi面向对象编程思想 第九章对话框 第二章Delphi语法基础 第五章VCL组件应用 第八章VCL组件应用续2 第六章VCL组件应用续1 第十一章文件操作和管理 第十三章数据库编程 第十二章图形图像和多媒体技术 第十章...

    深入PHP面向对象、模式与实践 (第2版)

    书中主要介绍了如何使用面向对象技术和设计...使用CVS进行版本控制第18章 使用PHPUnit进行测试第19章 用Phing实现项目的自动构建第五部分 结论第20章 对象、模式与实践第六部分 附录附录A 参考文献附录B 简单的解析器

    java 与 uml 面向对象程序设计

    本书主要介绍的是: 第一章 对象、uml和java 第二章对象的精髓 第三章java中的对象 第四章面向对象的分析与设计 第五章用swing实现面向对象的...第十章面向对象开发的软件工具 第十一章编程:个人观点 第十二章下一步

    VC++面向对象与可视化程序设计(黄维通)

    适合初学vc程序设计的 第一章 C++基础知识 第二章 VC++6.0开发环境 第三章 windows编程基础 第四章 windows的图形设备接口与windows绘图 ...第十五章 工具条类及其应用 第十六章 文档-视图结构及其应用

    精通Java:JDK、数据库系统开发Web开发(实例代码)

    第19章 国际化和本地化 第20章 泛型程序设计 第21章 访问数据库 第22章 获取XML数据 第23章 处理电子邮件 第24章 JSP技术应用 第5篇 综合案例 第25章 汉诺塔游戏 第26章 学生成绩查询系统 第27章 网上用户注册系统...

    C++primer 课后题答案

    C++primer 课后题答案 目录 第一章 快速入门 2 第二章 变量和基本类型 7 ...第十五章 面向对象编程 116 第十六章 部分选做习题 133 第十七章 用于大型程序的工具 138 第十八章 特殊工具与技术 138

    Visual Basical教程

    第二章面向对象编程基础 第三章VB语法基础 第四章基本程序结构 第五章数组 第六章子程序和函数 第七章程序调试和错误处理 第八章窗体(Form)和简单的输入输出 第九章VB基本控件及简单程序设计 第十章单选按钮、复选框...

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    本书为中南大学精品教材立项项目,分为上下两篇共21章,涵盖了面向对象技术中Java开发环境配置、程序设计基础、面向对象原理以及UML的知识。本书使用的开发环境是JDK 1.6+Eclipse 3.3+Rational Rose 2003,逐步引领...

    C++ 面向对象教程 21 courses#

    第1章 对象的演化 1 1.1 基本概念 1 1.1.1 对象:特性+行为 1 1.1.2 继承:类型关系 1 1.1.3 多态性 2 1.1.4 操作概念:OOP程序像什么 3 1.2 为什么C++会成功 3 1.2.1 较好的C 3 1.2.2 采用渐进的学习方式 4 1.2.3 ...

    Java开发详解.zip

    020501_【第5章:面向对象基础】_面向对象、类与对象的定义笔记.pdf 020502_【第5章:面向对象基础】_类与对象的进一步研究笔记.pdf 020503_【第5章:面向对象基础】_封装性笔记.pdf 020504_【第5章:面向对象基础】...

    C++ Primer习题集 第5版(完整版)

    第1章 开始 1 练习1.1~练习1.25 第2章 变量和基本类型 12 练习2.1~练习2.42 第3章 字符串、向量和数组 37 练习3.1~练习3.45 第4章 表达式 80 ...第19章 特殊工具与技术 502 练习19.1~练习19.26

    修改代码的艺术

    第19章 对非面向对象的项目,如何安全地对它进行修改 第20章 处理大类 第21章 需要修改大量相同的代码 第22章 要修改一个巨型方法,却没法为它编写测试 第23章 降低修改的风险 第24章 当你感到绝望时 第25章 解依赖...

    C#开发实战宝典.(清华出版.王小科等).part1

    第19章 文件及I/O 第20章 GDI+绘图技术 第21章 水晶报表与打印 第22章 网络编程 第23章 线程的使用 第24章 异常处理与程序调试 第25章 Windows应用程序打包部署 第3部分 项目实战 第26章 企业QQ系统 第27章 餐饮管理...

    C#开发实战宝典.(清华出版.王小科等).part2

    第19章 文件及I/O 第20章 GDI+绘图技术 第21章 水晶报表与打印 第22章 网络编程 第23章 线程的使用 第24章 异常处理与程序调试 第25章 Windows应用程序打包部署 第3部分 项目实战 第26章 企业QQ系统 第27章 餐饮管理...

    uml建模与软件项目管理

    01第一章 软件工程与面向对象方法.pptx 02第二章 统一建模语言UML.pptx 03第三章 Rational Rose工具概述.pptx 03UML世界的构成.PPT 04第四章 UML概念模型.pptx 05第五章 用例图.pptx 06第六章 类图与对象图.pptx 07...

    入门经典教程<<易学C++>>

    第13章 初识对象 163 第14章 再识对象 169 第15章 造物者与毁灭者——对象生灭 178 第16章 共有财产·好朋友·操作符 206 第17章父与子——继承 228 第18章 再谈输入与输出 273 第19章 万用的模板 285 ...

Global site tag (gtag.js) - Google Analytics