类是一种结构: 如果要访问类,前提是类在内存中存在.
类一般是一个单独的文件: 若要使用类就得加载类.
1. 手动加载
在使用类之前,手动的将类对应的文件给包含进来
publicController.class.php
<?php
/**
*
* @authors weikeduopp
* @date 2017-04-20 14:20:29
* @version $Id$
*/
header("content-type:text/html;charset=utf-8");
class publicController {
public function index(){
// echo "index方法被访问的时候,弹出html页面";
include "./view/index.html";
}
}
?>
<?php
/**
*
* @authors weikeduopp
* @date 2017-04-20 14:30:50
* @version $Id$
*/
//面向过程的编程思想,考虑的是, 有什么函数可以帮助我们加载首页
//调用外部文件include 引入外部html.呈现给用户
// include "./view/index.html";//路径 ./当前目录
// 目录要统一,前后都要是./
//
//兄弟 include_once 只加载一次. 过滤重复.
// 面向对象的思想.
// 要用什么类,需把类文件加载进来.
include_once './controller/publicController.class.php';
$a = new publicController();
$a->index(); //加载首页.
?>
2. 自动加载
自动加载: 系统会给提供一种机制: 如果系统当前要用类(实例化),但是系统又没有在内存中找到对应的类: 机制就会被触发, 可以通过被触发的机制,修改机制的内部,使得能够按照某个通用的规则将类文件进行加载到内存.
魔术函数: __autoload()
自动加载需要判断文件是否存在:存在才加载,不存在就不管
<?php
/**
*
* @authors weikeduopp
* @date 2017-04-20 15:40:39
* @version $Id$
*/
header("content-type:text/html;charset=utf-8");
// class test{
// public $name;
// private $money = 10;
// // 析构方法: __destruct(), 当对象被销毁之前,对象会自动调用的方法.
// // 作用: 释放所有的资源.(PHP中自动释放资源: 很少使用析构方法)
// //
// public
// }
// 类加载
// 1.手动---include
//
// 2.自动加载: 系统会给提供一种机制: 如果系统当前要用类(实例化),但是系统又没有在内存中找到对应的类: 机制就会被触发, 可以通过被触发的机制,修改机制的内部,使得能够按照某个通用的规则将类文件进行加载到内存.
// 魔术函数: __autoload() //先做了解.这个现在是用
function __autoload($class){
// echo $class;
// include_once "./controller/{$class}.class.php";
// 自动加载需要判断文件是否存在:存在才加载,不存在就不管 file_exists==>检查path
if( file_exists("./controller/{$class}.class.php") ){ //is_file()检查文件或目录是否存在
include_once "./controller/{$class}.class.php";
}
}
// 加载==>类publicController
$a = new publicController;//$class=>publicController
// $a->index();
?>
自动加载引入多个类文件
file_exists==>检查path.
is_file()检查文件或目录是否存在.
引入首页,路径用的是相对路径.目录要统一,前后都要是同一方式,方便引入修改.
创建类.
__construct(), 类在形成对象的过程中(实例化),之后会被形成的对象自动调用的方法: 构造对象.
<?php
/**
*
* @authors weikeduopp
* @date 2017-04-20 15:40:39
* @version $Id$
*/
header("content-type:text/html;charset=utf-8");
class test{
public $name;
private $money = 10;
// 构造方法的作用: 构造对象, 为了初始化属性
// 初始化
// __construct(), 类在形成对象的过程中(实例化),之后会被形成的对象自动调用的方法: 构造对象.
public function __construct($name,$money){
// $this是一种能够在对象调用方法的时候
echo __METHOD__;
// echo __FUNCTION__;
$this->name = $name;
$this->money = $money;
}
public function getMoney(){
echo $this->money;
}
// 构造方法的方法名字不叫__construct而是与类名同名 注意: 在高版本中已经不使用,有时候为了做兼容,会做两个构造方法
// public function test($name,$num){
// }
}
$a = new test("狗蛋",100);
echo $a->name;
// 私有成员的访问就是在类定义的方法中进行访问.
// 方法内部不能直接访问属性名字: 系统会当做局部变量
$a->getMoney();
?>