1.1 工厂模式,工厂方法或者类生成对象,而不是在代码直接new
class Factory{ static function getDatabase(){ return new Mysql($host, $user, $pass); } } #使用 Factory::getDatabase();
1.2 单例模式,使某个类的对象仅运行创建一个
参考文章单例模式
class Database { //单一对象属性 private static $instance; //定义一些全局变量需要存放属性 private $props = array(); //私有的构造方法 private function __construct(){ echo 'into construct! 该类不允许外部创建对象 '; } //返回单一实例 public static function getInstance () { //判断是否已经有了实例化的对象 if(empty(self::$instance)) { //可以被override (动态解析) self::$instance = new static(); //不可以被override (静态解析) //self::$instance = new self(); } return self::$instance; } public function __clone(){ return '该类禁止clone'; } //设置属性 public function setProperty ( $key, $value) { $this->props[$key] = $value; } //获取属性 public function getPeoperty ( $key ) { return $this->props[$key]; } } //使用 $dbObj = Database::getInstance(); $dbObj->setProperty('root_path','/www'); $dbObj->setProperty('tmp_path','/tmp'); //接下来删除该单例对象,如果还能获取到刚刚添加的属性,说明使用的是同一个对象 unset($dbObj); $dbObj = Database::getInstance(); echo $dbObj->getPeoperty('root_path'); echo $dbObj->getPeoperty('tmp_path');
1.3 注册模式,全局共享和交换对象
class Register (){ protected static $objects; function set($alias, $object){ self::$objects[$alias] = $objects; } function get($alias){ return self::$objects[$alias]; } function _unset($alias){ unset(self::$objects[$alias]); } }
2.总结使用
class Factory{ static function getDatabase(){ //单例模式获取数据对象 $dbObj = Database::getInstance(); //注册到全局树上 Register::set('db1', $dbObj); } } #使用 //第一次主文件里面 Factory::getDatabase(); //以后使用数据库对象直接访问 Register::get('db1');
版权声明:本文为博主原创文章,未经博主允许不得转载。

Laravel simplifies handling temporary session data using its intuitive flash methods. This is perfect for displaying brief messages, alerts, or notifications within your application. Data persists only for the subsequent request by default: $request-

The PHP Client URL (cURL) extension is a powerful tool for developers, enabling seamless interaction with remote servers and REST APIs. By leveraging libcurl, a well-respected multi-protocol file transfer library, PHP cURL facilitates efficient execution of various network protocols, including HTTP, HTTPS, and FTP. This extension offers granular control over HTTP requests, supports multiple concurrent operations, and provides built-in security features.

Laravel provides concise HTTP response simulation syntax, simplifying HTTP interaction testing. This approach significantly reduces code redundancy while making your test simulation more intuitive. The basic implementation provides a variety of response type shortcuts: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

PHP logging is essential for monitoring and debugging web applications, as well as capturing critical events, errors, and runtime behavior. It provides valuable insights into system performance, helps identify issues, and supports faster troubleshoot

Do you want to provide real-time, instant solutions to your customers' most pressing problems? Live chat lets you have real-time conversations with customers and resolve their problems instantly. It allows you to provide faster service to your custom

Article discusses late static binding (LSB) in PHP, introduced in PHP 5.3, allowing runtime resolution of static method calls for more flexible inheritance.Main issue: LSB vs. traditional polymorphism; LSB's practical applications and potential perfo

The article discusses adding custom functionality to frameworks, focusing on understanding architecture, identifying extension points, and best practices for integration and debugging.

Alipay PHP...


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Dreamweaver Mac version
Visual web development tools