日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php object 对象不存在。增加对象_PHP核心

發(fā)布時間:2024/8/23 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php object 对象不存在。增加对象_PHP核心 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、單例模式

單例模式三要素:

  • 擁有一個構(gòu)造函數(shù),并且為private
  • 擁有一個靜態(tài)成員變量來保持類的實例
  • 擁有一個訪問這個實例的靜態(tài)方法
<?php //Instan.php 單例類class Instan{static public $instance = null;private function __construct(){var_dump('new class');}public static function getInstance(){if(!self::$instance){self::$instance = new self();}return self::$instance;}public function getInfo(){echo 'Information...' . "<br />";}}<?php //test.phpinclude './Instan.php';Instan::getInstance()->getInfo(); Instan::getInstance()->getInfo(); Instan::getInstance()->getInfo();//在同一個進程中,無論調(diào)用多少次實例類,都只會實例化一次,這就是單例模式

2、注冊樹模式

  • 注冊樹模式通過將對象實例注冊到一棵全局的對象樹上
  • 需要的時候,從對象樹上采摘下來使用
<?php //test.phpinclude './abc';//只是為了演示注冊樹模式,生產(chǎn)環(huán)境不要這樣寫class Register{protected static $object = null;/*** 將對象實例掛到注冊樹上* @param $key* @param $object*/public static function set($key, $object){self::$object[$key] = $object;}/*** 獲取注冊樹獲取對象* @param $key*/public static function get($key){if(!isset(self::$object[$key])){self::$object[$key] = new $key;}return self::$object[$key];}/*** 從注冊樹上摘下* @param $key*/public static function unsetObj($key){unset(self::$object[$key]);}/*** 測試注冊樹*/public function test(){$abc = new Abc();self::set("Abc",$abc);//注冊$res = self::get("Abc")->getAbc();//獲取var_dump($res);//也可以直接get,因為get方法會自動注冊self::get("Abc")->getAbc();}}<?php //abc.phpclass Abc {public function getAbc(){var_dump('ABC');} }

3、依賴注入(控制反轉(zhuǎn))

//Index.php 控制器class Index {$person = new Person();$car = new Car();//此處的Car類可以靈活的換成其他類echo $person->driveCar($car); }//Person類class Person {/*** 依賴:Person類依賴于Car類* 注入:Car類注入到Person類* @param $obj* @return mixed*/public function driveCar($obj){return $obj->run();}}//Car類class Car {public function run(){return '跑得快,跑得快...';} }

4、反射

https://www.php.net/manual/zh/book.reflection.php

<?php class Apple {public function firstMethod() { }final protected function secondMethod() { }private static function thirdMethod() { } }$class = new ReflectionClass('Apple'); $methods = $class->getMethods(); var_dump($methods); ?>array(3) {[0]=>&object(ReflectionMethod)#2 (2) {["name"]=>string(11) "firstMethod"["class"]=>string(5) "Apple"}[1]=>&object(ReflectionMethod)#3 (2) {["name"]=>string(12) "secondMethod"["class"]=>string(5) "Apple"}[2]=>&object(ReflectionMethod)#4 (2) {["name"]=>string(11) "thirdMethod"["class"]=>string(5) "Apple"} }

總結(jié)

以上是生活随笔為你收集整理的php object 对象不存在。增加对象_PHP核心的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。