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