第19章 面向对象的工具
程序员文章站
2024-01-25 14:00:46
...
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()); ?>
上一篇: 请问怎么在php里修改xml文件?