一、加载类
1、require 方式
<?php
class Ren{
public $name;
public $sex;
}
?>
上面 有一个文件名为Ren的类加载的现在的文件中
<?php
require("./Ren.class.php");//括号里面是路径
$r = new Ren();
var_dump($r);
?>
2、require_once方法
<?php
require_once("./Ren.class.php");
$r = new Ren();
var_dump($r);
?>
结果是一样的 不一样的是require不能重复 重复使用会报错,require_once不会报错
<?php
require_once("./Ren.class.php");
require_once("./Ren.class.php");
$r = new Ren();
var_dump($r);
?>
<?php
require("./Ren.class.php");
require("./Ren.class.php");
$r = new Ren();
var_dump($r);
?>
3、include方法
重复会报错
<?php
include("./Ren.class.php");
$r = new Ren();
var_dump($r);
?>
4、 include_once方法
重复不会报错
<?php
include_once("./Ren.class.php");
$r = new Ren();
var_dump($r);
?>
require方法出现错误时脚本停止运行
include方法出现错误时脚本继续运行
5、自动加载
条件:1、所有类的命名要规范 class.Ren
2、所有的类要放在同一个文件夹下,
3、类文件名要规范 Ren.class.php
当有好几个工具类文件时一一加载太麻烦 所以可以用自动加载
<?php
function __autoload($classname){
require_once "./{$classname}.class.php";
}
$r = new Ren();
$s = new Dog();
var_dump($r);
var_dump($s);
?>
二、魔术方法
function__construct(){
} 构造函数,对类里面的成员进行初始化
<?php
class Ren{
public $name;
public $sex;
public function __construct($sex){
$this->sex = $sex;
echo "测试一下";
}
}
$r = new Ren("男");
$r->name = "张三";
var_dump($r);
function__destruct(){
} 析构函数,在对象释放时自动执行
<?php
class Ren{
public $name;
public $sex;
public function __construct($sex){
$this->sex = $sex;
}
public function __destruct(){
echo "销毁";
}//执行完name后没有可执行的 会自动销毁内容
}
$r = new Ren("男");
$r->name = "张三";
?>
__赋值方法
function__set(){
}
__取值方法
function__get(){
}
class Ren{
public $name;
public $sex;
private $age;//public----private
public function __set($name,$value){//$name变量名$value变量值
if($name == "age"){
if($value>=18&&$value<=50){
$this->$name = $value;
}
}
else{
$this->$name = $value;
}
}
public function __get($name){
return $this->$name;
}
}
$r = new Ren();
$r->name = "张三";
$r->age = 20;//自动调用__set
$r->age;//自动调用__get
var_dump($r)
?>
function__tostring(){
} 输出对象的方法
<?php
class Ren{
public $name;
}
$r = new Ren();
var_dump($r);
?>
如果用echo输出会报错
<?php
class Ren{
public $name;
}
$r = new Ren();
echo $r ;
?>
用魔术方法再用echo就没事了
<?php
class Ren{
public $name;
public function __tostring(){
return "这是一个人类";
}
}
$r = new Ren();
echo $r;
?>
function__clone(){
}克隆对象的方法
克隆
<?php
class Ren{
public $name;
}
$r = new Ren();
$r->name = "张三";
$r1 = clone $r;
var_dump($r1);
?>
对新克隆出的对象就行修改
<?php
class Ren{
public $name;
public function __clone(){
$this->name = "李四";
}
}
$r = new Ren();
$r->name = "张三";
$r1 = clone $r;
var_dump($r1);
?>