`

第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的进一步讨论 这...

    面向对象编程:C++与Java比较教程 英文版

    第19章讨论了网络编程,即如何使用C++和Java进行网络通信。 第20章讲述了数据库编程,包括使用C++和Java语言进行数据存储和检索的方法。 这本书不仅适用于那些希望掌握C++和Java语言的专业人员,也适用于高等教育...

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

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

    黄维通Visual C++面向对象与可视化程序设计(第三版)例题第7,9,10章

    第九章和第十章则基于更现代的开发工具——Visual Studio 2008,这是一款功能强大的IDE,支持C++和其他多种编程语言。这两个章节可能涵盖以下内容: 1. MFC(Microsoft Foundation Classes)库:这是微软提供的一个...

    使用UML进行面向对象分析与设计 中文课件

    面向对象分析与设计是软件开发过程中的核心环节,UML(统一建模语言)作为这一领域的标准工具,被广泛应用于需求分析、系统设计和沟通交流。"使用UML进行面向对象分析与设计 中文课件"是IBM软件学院提供的一套专业...

    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章 网上用户注册系统...

    java面向对象程序设计习题大全

    #### 第六章:面向对象程序设计 **知识点概述**: 1. **抽象类**:包含抽象方法的类,不能被实例化。 2. **接口**:一组抽象方法的集合,用于定义类之间的契约关系。 3. **继承与实现**:子类继承父类的属性和方法...

    面向对象程序实用用教程

    **第九章:多态性** 多态性(Polymorphism)指的是同一种行为在不同对象上表现出不同的形态。在C++中,多态主要通过虚函数(virtual function)和纯虚函数(pure virtual function)实现。它使得代码更加通用,增强...

    深入PHP:面向对象、模式与实践(第3版)第17到19章

    在深入PHP:面向对象、模式与实践(第3版)的第17到19章中,作者详细探讨了三个关键的开发实践:版本控制、自动化测试和项目构建。以下是这三个主题的详细解读: 17、使用Subversion进行版本控制: Subversion...

    Visual Basical教程

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

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

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

    《面向对象的程序设计(java)》教学大纲2010版1.doc

    6. **第九章:Java多线程机制** - 多线程的基本原理和实现方式。 - 线程间的同步和通信。 7. **第十章:输入输出流** - 文件的读写操作。 - 字节流和字符流的区别及使用场景。 8. **第十一章:Java网络的...

    ACCP8.0S2-Y2转换课程第2到11章上机课程素材(答案)

    这个课程涵盖了从第二章到第十一章的上机实践部分,旨在通过实际操作来巩固理论知识,加强学员对编程语言、软件工程方法和相关工具的理解。下面我们将详细探讨这些章节可能涵盖的关键知识点。 **第二章:编程基础...

    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章:面向对象基础】...

    MATLAB 2014从新手到高手视频教程下载第19章 MATLAB 高级应用.zip

    在本《MATLAB 2014从新手到高手视频教程》的第19章“MATLAB 高级应用”中,我们将深入探讨MATLAB在复杂计算、数据分析和算法开发等高级领域的应用。MATLAB(矩阵实验室)是一款强大的数学计算软件,广泛用于工程、...

Global site tag (gtag.js) - Google Analytics