第三章 面向对象的工具

computer.class.php

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

person.class.php

<?php
	class Person {	
	}
?>

demo1.php

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

demo2.php

<meta charset="UTF-8">
<?php
	class Computer {
		public function _run() {
			echo '运行';
		}		
		//采用__call()方法屏蔽调用
		//__call()里面有两个参数
		public function __call($_methodName,$_argList) {
			echo $_methodName.'()方法不存在';
			print_r($_argList);
		}
	}
	$computer = new Computer();
	$computer->_go();
?>

demo3.php

<meta charset="UTF-8">
<?php
	class Computer {
		public function _run() {
			echo '运行';
		}	
		public function __toString() {
			return '我是对象的字符串!';
		}
	}
//	$computer = new Computer();
//	echo $computer;
	echo new Computer();
?>

demo4.php

<meta charset="UTF-8">
<?php
	class Computer {
		public $_name = 'dell';
		public function _run() {
			echo '运行';
		}	
	}
	//引用传递
	$computer1 = new Computer();
	$computer2 = $computer1;
	$computer2->_name = 'ibm';
	echo $computer1->_name;
?>

demo5.php

<meta charset="UTF-8">
<?php
	class Computer {
		public $_name = 'dell';
		public function _run() {
			echo '运行';
		}	
	}
	//独立实例
	$computer1 = new Computer();
	$computer2 = new Computer();
	$computer1->_name = '联想';
	echo $computer1->_name;
?>

demo6.php

<meta charset="UTF-8">
<?php
	class Computer {
		public $_name = 'dell';
		public function _run() {
			echo '运行';
		}	
	}
	//对象克隆
	$computer1 = new Computer();
	$computer1->_name='联想';
	$computer2 = clone $computer1;
	//echo $computer2->_name;
	$computer2->_name = 'ibm';
	echo $computer2->_name;
	echo $computer1->_name;
?>

demo7.php

<meta charset="UTF-8">
<?php
	class Computer {
		public $_name = 'dell';
		public function _run() {
			echo '运行';
		}	
		public function __clone() {
			echo '克隆了';
			$this->_name = '联想';
		}
	}
	$computer1 = new Computer();
	$computer2 = clone $computer1;
	echo $computer1->_name;
	echo $computer2->_name;
?>

demo8.php

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

demo9.php

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

demo10.php

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

猜你喜欢

转载自onestopweb.iteye.com/blog/2325964
今日推荐