<?php //面向对象的三大特性 //封装: //目的:为了让类更安全 //做法:将成员变量变为私有,做一个方法来间接操作成员变量,在方法里面加限制条件 //继承: //子类可以继承父类的一切 //特点:单继承,一个子类只能有一个父类 //多态: //当父类引用指向子类实例,由于子类对父类的方法进行了重写,使用父类引用去调用该方法的时候表现出的不同状态 //静态: //静态的成员是属于类的 //普通成员是属于对象的 //抽象类 //不能被实例化 //接口 //关键字:interface //加载类: //include("./Ren.class.php"); //include "./Ren.class.php"; //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.单例模式 //类的计划生育 //1.让该类在外界无法造对象 //2.让外界可以造一个对象,做一个静态方法返回对象 //3.在类里面通过静态变量控制返回对象只能是一个 class Dog { static $dx; public $test; private function __construct() { } static function DuiXiang() { //return new Dog(); if(empty(self::$dx)) { 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(); ?>
时间: 2024-10-24 14:06:23