第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());
?>

猜你喜欢

转载自onestopweb.iteye.com/blog/2207215