php面向對象加載類、經常使用設計模式

加載類:

include("./Ren.class.php");
include "./Ren.class.php";           用此方法的時候include後面要加空格

require("./Ren.class.php");
require "./Ren.class.php";

require_once("./Ren.class.php");
require_once "./Ren.class.php";

自動加載類的方法 (全部的類文件要放在同一目錄下,全部類文件的命名規則一致)

function __autoload($classname)
{
    require $classname.".class.php";
}

$r = new Ren();
設計模式

單例模式:類的計劃生育
1.讓該類在外界沒法造對象
2.讓外界能夠造一個對象,作一個靜態方法返回對象
3.在類裏面經過靜態變量控制返回對象只能是一個

class Dog
{
    static $dx;
    public $test;
    
    private function __construct()
    {

    }

    static function DuiXiang()
    {
        //return new Dog();
        if(empty(self::$dx))              靜態要加self
        {
            self::$dx=new Dog();
        }
        return self::$dx;
    }
}

$a=Dog::DuiXiang();

$b=Dog::DuiXiang();
$b->test="hello";

var_dump($a);
工廠模式:
class YunSuan
{
    public $a;
    public $b;
    
    function Jia()
    {
        return $a+$b;
    }
    function Jian()
    {
        return $a-$b;
    }
}


abstract class YuanSuan
{
    public $a;
    public $b;
    
    function Suan()
    {
    }
}

class Jia extends YuanSuan
{
    function Suan()
    {
        return $this->a+$this->b;
    }
}

class Jian extends YuanSuan
{
    function Suan()
    {
        return $this->a-$this->b;
    }
}

class Cheng extends YuanSuan
{
    function Suan()
    {
        return $this->a*$this->b;
    }
}

$j = new Cheng();
$j->Suan();


class GongChang
{
    static function ShengChan($f)
    {
        switch($f)
        {
            case "+":
                return new Jia();
                break;
            case "-":
                return new Jian();
                break;
            case "*":
                return new Cheng();
                break;
        }
    }
}


$r = GongChang::ShengChan("*");
$r->a=10;
$r->b=5;
echo $r->Suan();
相關文章
相關標籤/搜索