Table des matières
学习小笔记---大话PHP设计模式
Maison développement back-end tutoriel php 学习小笔记---大话PHP设计模式_PHP教程

学习小笔记---大话PHP设计模式_PHP教程

Jul 12, 2016 am 09:07 AM
笔记 设计模式

学习小笔记---大话PHP设计模式

PHPStorm IDE
开发字体选用:Source Code Pro , Courier New , Concolas
 
 
php命名空间 :可以解决 不同类中 相同名字方法的冲突
namespace test1;
function test(){
 
自动载入  :       
function  __autoload($class){
   require  __DIR__.'/'$class.'.php';
}
 
spl_autoload_register(); 这个函数,可以允许多个 autoload 必须现在头一行
例如 :
spl_autoload_register('autoload1');
spl_autoload_register('autoload2');
function  autoload1($class){
   require  __DIR__.'/'$class.'.php';
}
function  autoload2($class){
   require  __DIR__.'/'$class.'.php';
}
require 以后 类名::方法名调用(); 
例如:Test1::test();Test2::test();
 
PSR-0规范
 
1 php的命名空间必须于绝对路径一致
2 类名与文件名一致 的首字母必须大写
3 除了路口文件外,其他".php"必须只有一个类不能有可执行代码 例如:echo();
__DIR__       魔术常量 获取当前文件的路径
__FUNCTION__  魔术常量 获取当前方法
__METHOD__    魔术常量 获取当前类名和方法
BASEDIR       网站根目录
 
spl 标准简介
 
SplStack(); 先进后出  站式数据结构
$stack=new SplStack();
$stack->push("test1");   //先进 入站
$stack->push("test2");   //先进
echo $stack->pop();      //后出 出站 test2
echo  $stack->pop();     //后出      test1
 
SplQueue(); 先进先出  队列式数据结构
$SplQueue=new SplQueue();
$SplQueue->enqueue("test1");   //先进
$SplQueue->enqueue("test2");   //先进
echo $SplQueue->dequeue();           //先出 test1
echo $SplQueue->dequeue();           //先出 test2
 
SplMinheap();   堆式数据结构
$SplMinheap=new SplMinheap();
$SplMinheap->insert('test1');
$SplMinheap->insert('test2');
echo $SplMinheap->extract();   test1
echo $SplMinheap->extract();   test2
 
$sqlFixedArray();    固定尺寸的数组 (固定长度)
$array= new $sqlFixedArray(10);(括号中设置数据长度)
$array['0']=1;
$array['8']=8;
 
PHP链试 操作的实现  好处就是可以用一行代码来实现很多的功能
 
$ob->where()->order()->limit()->select();
 
PHP 面向对象高级特性
 
PHP 魔术方法的使用 
1 __get/__set               //将对象的首信进行接管
2 __call/__callStatic       //用来控制PHP的方法调用/控制类的静态方法调用
3 __toString               //将一个PHP对象转换成字符串
4 __invoke                 //将PHP当成函数来使用
 
打印出来的结果是 不管下标1-7有没有值 都会打印出来 没值的自动给个空值 
 
 
PHPstorm 配置安装
http://blog.csdn.net/ikscher/article/details/43672365
 
三种 基本设计模式
 
工厂模式 : 工厂方法或者类 来生成对像,而不是在代码中直接new 代替new
好处 :就是万一发生更改 只改一个工厂模式类就可以了
 
单例模式 : 使某个类的对象仅允许创建一次
好处 :无论需要多少个实例对象 实际上只连接了数据库一次
 
注册模式 : 全局共享交换对象  与工厂模式配合更好
好处 :全局共享交换对象
 
注册树与工厂模式共同试用 可以减少 对内存资源的浪费。因为调用的是同一个对象。还可以添加数据对
 
象映射模式 减少对数据库的直接操作 操作的是类库的属性
 
适配器模式 
 
让不同的接口封装成统一的API
PHP 类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此 PHP 引
 
入了类的接口技术。
 
如果一个抽象类里面的所有方法都是抽象方法,且没有声明变量,而且接口里面所有的成员都是 public 
 
权限的,那么这种特殊的抽象类就叫 接口 。
 
接口使用关键字 interface 来定义,并使用关键字 implements 来实现接口中的方法,且必须完全实现。 
 
策略模式 将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式 
 
例如判断用户的男女给予不同的需求 
先写出 男的需求 然后再写出女的需求 
根据传输的值 决定调用那个需求 而不再用繁琐的判断来实现 更改的话只要再写一种需求就好了
 
数据对象影射模式 
1 数据对象映射模式,是将对象和数据存储映射起来,对一个对象的操作会映射为对数据储存的操作
 
观察者模式 当一个对象状态发生改变时,依赖它的对象会全部接到通知 并自动更新 用处 当一个事件发
 
生的时候 与其关联的都可以写在观察者类里
 
原型模式 与工厂模式作用类似,都是用来创建对象的
与工厂模式的实现不同,原型模式是事先创建好一个原型对象,然后通过clone原型对象来创建新的对象。
 
这样就免去了类创建时的初始化操作
原型模式适用于大对象的创建。创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅
 
需内存拷贝即可。
用处:比如建立的一个类对象中涉及到很多循环之类的 在new了以后 下次调用的时候 直接克隆这个对象 
 
而不是继续new
 
装饰器模式 装饰器模式(Decorator),可以动态的添加修改类的功能 一个类提供了一项功能,如果在修改
 
并添加了额外的功能,传统的编辑模式,需要写一个子类继承它,并重新实现类的方法
使用装饰器模式,仅需在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性。
 
迭代器模式 在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素 
相比于传统编程模式,迭代器模式可以隐藏遍历元素的所需要的操作
namespace test;
class AllUser implements \Iterator {//调用迭代器接口 由PHP本身提供的
 
     protected $ids;
     protected $data = array();
     protected $num  ;
 
    function __construct(){
        //实例化模型
        //读取数据库
 
    }
    function valid(){//验证当前是否还有下一个元素
 
    }
    function next(){//获取下一个元素
 
    }
    function current(){ //获取当前的元素
 
    }
    function rewind(){//重置整个迭代器
 
    }
    function key(){//获取迭代器中的位置
 
    }
 
 
 
代理模式 
在客户端与实体之间建立一个代理对象(proxy),客户端对实体进行操作全部委派给代理对象,隐藏实体
 
的具体实现细节
proxy还可以与业务代码分离,部署到另外的服务器,业务代码中通过RPC来委派任务。
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1060602.htmlTechArticle学习小笔记---大话PHP设计模式 PHPStorm IDE 开发字体选用:Source Code Pro , Courier New , Concolas php命名空间 :可以解决 不同类中 相同名字方法的冲...
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La différence entre les modèles de conception et les modèles architecturaux dans le framework Java La différence entre les modèles de conception et les modèles architecturaux dans le framework Java Jun 02, 2024 pm 12:59 PM

Dans le framework Java, la différence entre les modèles de conception et les modèles architecturaux réside dans le fait que les modèles de conception définissent des solutions abstraites aux problèmes courants de conception de logiciels, en se concentrant sur l'interaction entre les classes et les objets, tels que les modèles d'usine. Les modèles architecturaux définissent la relation entre les structures et les modules du système, en se concentrant sur l'organisation et l'interaction des composants du système, tels que l'architecture en couches.

L'utilisation merveilleuse du modèle d'adaptateur dans les modèles de conception Java L'utilisation merveilleuse du modèle d'adaptateur dans les modèles de conception Java May 09, 2024 pm 12:54 PM

Le modèle Adaptateur est un modèle de conception structurelle qui permet à des objets incompatibles de fonctionner ensemble. Il convertit une interface en une autre afin que les objets puissent interagir de manière fluide. L'adaptateur d'objet implémente le modèle d'adaptateur en créant un objet adaptateur contenant l'objet adapté et en implémentant l'interface cible. Dans un cas pratique, grâce au mode adaptateur, le client (tel que MediaPlayer) peut lire des médias au format avancé (tels que VLC), bien qu'il ne prenne lui-même en charge que les formats multimédias ordinaires (tels que MP3).

Analyse du modèle de décorateur dans les modèles de conception Java Analyse du modèle de décorateur dans les modèles de conception Java May 09, 2024 pm 03:12 PM

Le modèle décorateur est un modèle de conception structurelle qui permet l’ajout dynamique de fonctionnalités d’objet sans modifier la classe d’origine. Il est mis en œuvre grâce à la collaboration de composants abstraits, de composants concrets, de décorateurs abstraits et de décorateurs concrets, et peut étendre de manière flexible les fonctions de classe pour répondre aux besoins changeants. Dans cet exemple, des décorateurs de lait et de moka sont ajoutés à Espresso pour un prix total de 2,29 $, démontrant la puissance du modèle de décorateur pour modifier dynamiquement le comportement des objets.

Analyse de cas pratique du modèle de conception PHP Analyse de cas pratique du modèle de conception PHP May 08, 2024 am 08:09 AM

1. Modèle d'usine : séparez la création d'objets et la logique métier, et créez des objets des types spécifiés via des classes d'usine. 2. Modèle d'observateur : permet aux objets sujets d'informer les objets observateurs de leurs changements d'état, obtenant ainsi un couplage lâche et un modèle d'observateur.

Quels sont les avantages et les inconvénients de l'utilisation de modèles de conception dans le framework Java ? Quels sont les avantages et les inconvénients de l'utilisation de modèles de conception dans le framework Java ? Jun 01, 2024 pm 02:13 PM

Les avantages de l'utilisation de modèles de conception dans les frameworks Java incluent : une lisibilité, une maintenabilité et une évolutivité améliorées du code. Les inconvénients incluent la complexité, la surcharge de performances et la courbe d'apprentissage abrupte due à une utilisation excessive. Cas pratique : Le mode proxy permet de charger des objets paresseusement. Utilisez les modèles de conception à bon escient pour tirer parti de leurs avantages et minimiser leurs inconvénients.

Comment les modèles de conception gèrent les défis de maintenance du code Comment les modèles de conception gèrent les défis de maintenance du code May 09, 2024 pm 12:45 PM

Les modèles de conception résolvent les problèmes de maintenance du code en fournissant des solutions réutilisables et extensibles : Modèle d'observateur : permet aux objets de s'abonner aux événements et de recevoir des notifications lorsqu'ils se produisent. Factory Pattern : fournit un moyen centralisé de créer des objets sans recourir à des classes concrètes. Modèle Singleton : garantit qu'une classe n'a qu'une seule instance, qui est utilisée pour créer des objets accessibles globalement.

Application des modèles de conception dans le cadre Guice Application des modèles de conception dans le cadre Guice Jun 02, 2024 pm 10:49 PM

Le framework Guice applique un certain nombre de modèles de conception, notamment : Modèle Singleton : garantir qu'une classe n'a qu'une seule instance via l'annotation @Singleton. Modèle de méthode d'usine : créez une méthode d'usine via l'annotation @Provides et obtenez l'instance d'objet lors de l'injection de dépendances. Mode stratégie : encapsulez l'algorithme dans différentes classes de stratégie et spécifiez la stratégie spécifique via l'annotation @Named.

Modèles de conception PHP : développement piloté par les tests en pratique Modèles de conception PHP : développement piloté par les tests en pratique Jun 03, 2024 pm 02:14 PM

TDD est utilisé pour écrire du code PHP de haute qualité. Les étapes comprennent : l'écriture de cas de test, la description des fonctionnalités attendues et leur échec. Écrivez du code de manière à ce que seuls les cas de test réussissent sans optimisation excessive ni conception détaillée. Une fois les cas de test réussis, optimisez et refactorisez le code pour améliorer la lisibilité, la maintenabilité et l’évolutivité.

See all articles