首页 » SEO优化 » php例程技巧_完整的 PHP 依靠倒置原则例程

php例程技巧_完整的 PHP 依靠倒置原则例程

duote123 2024-10-26 0

扫一扫用手机浏览

文章目录 [+]

就拿这篇文章来说,观点讲的没有问题,但在详细实现上,特殊是代码中有很多缺点,不能表示 PHP特色,比如PHP中该当用->而不是用.来调用方法,变量名该当带$等很多缺点,这就不说了,最关键的是纵然把这些语法缺点都改正,例子也不能解释原则,不足有说服力。
由于纵然不加接口或抽象类,妈妈也一样能给孩子讲故事、读报纸、读杂志。

以下可运行代码,没有用到任何接口和抽象类,一样可以实现功能,并且可扩展,不须要修正 Mother类里的任何代码,一样可以轻松自若地让妈妈读各种读物,无非便是在上面追加各种class,只要这个class里有getContent方法,妈妈全部可以识别:

php例程技巧_完整的 PHP 依靠倒置原则例程

<?php

php例程技巧_完整的 PHP 依靠倒置原则例程
(图片来自网络侵删)

class Book {

public function getContent{

return \"大众良久良久以前有一个阿拉伯的故事……\n\公众;

}

}

class Newspaper {

public function getContent{

return \"大众林书豪17+9助尼克斯击败老鹰……\n\"大众;

}

}

class Mother{

public function narrate($book){

echo \公众妈妈开始讲故事\n\公众;

echo $book->getContent;

}

}

class Client{

public static function main{

$mother = new Mother;

$mother->narrate(new Book);

$mother->narrate(new Newspaper);

}

}

Client::main;

既然如此随意,还如何表示依赖颠倒呢?这是由于 PHP是弱类型措辞,特点便是不须要为变量指定类型,导致的结果便是只要你的class里有我须要调用的方法(在这里是getContent方法),那就无论如何也不会出错,至于你是不是实现了什么interface接口,都无所谓的。
像这样,是无法真正表示依赖颠倒原则的。
那到底如何才能真正表示依赖颠倒呢?窍门便是我们通过利用PHP的类型约束来规定narrate函数的$book参数必须是一个接口:

class Mother{

public function narrate(IReader $book){

echo \"大众妈妈开始讲故事\n\公众;

echo $book->getContent;

}

}

在这里,我们规定了 $book参数必须是一个IReader接口,那么凡是须要让妈妈讲的读物都必须是对付IReader这个接口的一个实现,否则就会报错。
完全代码如下:

<?php

interface IReader{

public function getContent;

}

class Book implements IReader {

public function getContent{

return \"大众良久良久以前有一个阿拉伯的故事……\n\公众;

}

}

class Newspaper implements IReader {

public function getContent{

return \"大众林书豪17+9助尼克斯击败老鹰……\n\公众;

}

}

class Mother{

public function narrate(IReader $book){

echo \公众妈妈开始讲故事\n\"大众;

echo $book->getContent;

}

}

class Client{

public static function main{

$mother = new Mother;

$mother->narrate(new Book);

$mother->narrate(new Newspaper);

}

}

$client = new Client;

$client->main;

你可以试着把 classNewspaper后面的implementsIReader去掉然后运行一下,立时就会报错:

PHP Fatal error: Uncaught TypeError: Argument 1 passed to Mother::narrate must implement interface IReader, instance of Newspaper given, called in /Users/zhangjing/Projects/phpdesignpattern/client.php on line 29 and defined in /Users/zhangjing/Projects/phpdesignpattern/client.php:19

以是结论是:对付PHP这种弱类型措辞来讲,要想真正实现依赖颠倒原则,必须加上类型约束,否则实现的只是表象,并不能真正表示原则的浸染。

相关文章

我国土地利用分类代码的构建与应用

土地利用分类代码是我国土地管理的重要组成部分,是土地资源调查、规划、利用和保护的依据。土地利用分类代码的构建与应用显得尤为重要。本...

SEO优化 2025-02-18 阅读1 评论0

微信跳转微信支付便捷支付体验的秘密武器

移动支付已成为人们日常生活中不可或缺的一部分。作为我国领先的社交平台,微信支付凭借其便捷、安全的支付方式,深受广大用户的喜爱。而微...

SEO优化 2025-02-18 阅读1 评论0

探寻会计科目代码背后的奥秘分类与

会计科目代码是会计信息系统中不可或缺的组成部分,它将企业的经济活动进行分类和归纳,为会计核算、财务分析和决策提供重要依据。本文将从...

SEO优化 2025-02-18 阅读1 评论0