200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > php设计模式 工厂 单例 注册树模式 php设计模式

php设计模式 工厂 单例 注册树模式 php设计模式

时间:2020-03-31 16:49:07

相关推荐

php设计模式  工厂 单例 注册树模式 php设计模式

php教程|php手册

php5

php教程-php手册

php设计模式 工厂、单例、注册树模式,php设计模式

php 地区人才网源码,填加源 ubuntu,tomcat配置默认服务端口,爬虫赔率数据,PHP语句以什么符号结束( ),南山seo策略lzw

Source Code Pro字体 easyphp

安卓 tv项目源码,进ubuntu不顺畅,爬虫技术的分析,php 炒粉,无锡搜狗seolzw

命名空间:隔离类和函数,php5.3以后

权重查询 源码,vscode选择环境,ubuntu 帐号,tomcat启动exit,sqlite微信恢复,jquery 正在加载插件,vue2前端框架介绍,爬虫记录朋友圈,实战突击php项目,潍坊seo付费,小鸟云网站源码,webbrowser网页大小,手机影视模板lzw

//test5.php

<?phpnamespace Test5;//命名空间必须是程序脚本的第一条语句,除了declarefunction test(){ echo __FILE__;}

//test6.php

<?phpnamespace Test6;function test(){ echo __FILE__;}

<?php

require est5.php;require est6.php;Test5\test();Test6\test();

类自动载入:php5.2以后

spl_autoload_register(autoload1);Test5::test();Test6::test();function autoload1($class){ require __DIR__./.$class..php;}

PSR-0规范:

命名空间必须与绝对路径一致

类名首字母必须大写

除入口文件外,其他“.php” 必须只有一个类。

开发符合PSR-0规范的基础框架

spl标准库:

PHP链式操作:

//index.php

$db = new Baobab\Database();

$db->where(id = 1)->order(order by id)->limit(1);

魔术方法:

__get/__set:接管对象属性。在给不可访问属性赋值时,__set() 会被调用;读取不可访问属性的值时,__get() 会被调用。

__call/__callStatic:在对象中调用一个不可访问方法时,__call() 会被调用;用静态方式中调用一个不可访问方法时,__callStatic() 会被调用。

__toString:一个类转化成字符串

__invoke:以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。

object.php

array[$key] = $value; } function __get($key){ //echo __METHOD__; return $this->array[$key]; } function __call($func, $param){ //var_dump($func,$param); return magic function; } static function __callstatic($func, $param) { //var_dump($func, $param); return magic static function; } function __toString(){ return __CLASS__; } function __invoke($param) { return var_dump($param); } }

index.php

$obj = new baobab\Object();$obj->title = hello;echo $obj->title;echo $obj->test1(hello, 123);echo $obj::test1(hello1, 1234);echo $obj;echo $obj( est1);

1、三种基本设计模式

工厂模式:使用工厂方法或类生产对象,而不是在代码中直接new

Factory.php

<?phpnamespace Baobab;class Factory{ static function createDatabase(){ $db = new Database(); return $db; }}

index.php

$db = Baobab\Factory::createDatabase();

$db1 = Baobab\Factory::createDatabase();

$db->limit($limit);

单例模式:使某个类的对象仅允许创建一个

Database.php

<?phpnamespace Baobab;class Database{ protected static $db; private function __construct(){ } static function getInstance(){ if (self::$db){ return self::$db; }else{ //self是指向类本身,也就是self是不指向任何已经实例化的对象(::域运算符号) self::$db = new self(); return self::$db; } }

index.php

$db = Baobab\Database::getInstance();

注册模式:解决全局共享和交换对象,将对象注册到全局树上,可以在任何地方被直接访问

Register.php

<?phpnamespace Baobab;class Register{ protected static $objects; static function set($alias, $object){ self::$objects[$alias] = $object; } static function _unset($alias) { unset(self::$objects[$alias]); } static function get($name) { return self::$objects[$name]; }}

//将db注册到注册树上Register::set(db1, $db);

index.php

$db = Baobab\Register::get(db1);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。