php truepath,php – 为什么switch(true)具有比if()elseif()更小的NPath复杂度?
我有这个功能负责将文件的名称和MIME类型转换为更多的“人”(例如file.png,image / png到[Image,PNG])。我发现有趣的是,if()elseif()语句的组具有比switch(true)语句更高的NPath复杂度。
使用以下代码,PHP Mess Detector输出一个4410的NPath:
public function humanKind()
{
$typeRA = explode("/", strtolower($this->type));
$fileRA = explode(".", $this->name);
$fileType = strtoupper($fileRA[count($fileRA) - 1]);
switch($typeRA[0]) {
case "image":
$humanType = "Image";
break;
case "video":
$humanType = "Video";
break;
case "audio":
$humanType = "Sound";
break;
case "font":
$humanType = "Font";
break;
default:
$humanType = "File";
}
switch ($this->type) {
case "application/msword":
case "application/pdf":
case "applicaiton/wordperfect":
case "text/plain":
case "text/rtf":
case "image/vnd.photoshop":
case "image/psd":
case "image/vnd.adobe.photoshop":
case "image/x-photoshop":
case "application/xml":
case "application/x-mspublisher":
case "text/html":
case "application/xhtml+xml":
case "text/richtext":
case "application/rtf":
case "application/x-iwork-pages-sffpages":
case "application/vnd.apple.pages":
$humanType = "Document";
break;
case "application/vnd.ms-excel":
case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":
case "application/x-iwork-numbers-sffnumbers":
case "application/vnd.apple.numbers":
$humanType = "Spreadsheet";
break;
case "application/vnd.ms-powerpoint":
case "application/vnd.openxmlformats-officedocument.presentationml.presentation":
case "application/vnd.openxmlformats-officedocument.presentationml.slideshow":
case "application/x-iwork-keynote-sffkey":
case "application/vnd.apple.keynote":
$humanType = "Slideshow";
break;
case "application/zip":
case "application/x-zip-compressed":
case "application/x-compressed":
case "application/x-compress":
case "application/x-rar-compressed":
case "applicaiton/x-7z-compressed":
case "application/x-ace-compressed":
$humanType = "Archive";
break;
case "text/x-vcard":
case "text/x-ms-contact":
$humanType = "Contact";
break;
case "text/x-php":
case "application/x-dosexec":
case "application/x-xpinstall":
case "application/x-opera-extension":
case "application/x-chrome-extension":
case "application/x-perl":
case "application/x-shockwave-flash":
case "application/java-archive":
$humanType = "Program";
break;
case "application/vnd.ms-fontobject":
case "application/font-woff":
case "application/x-font-truetype":
case "application/x-font-opentype":
case "application/x-font-ttf":
case "application/font-sfnt":
$humanType = "Font";
break;
}
// Special Cases
if ($humanType == "Archive" && $fileType == "APK") { // Android App
$humanType = "App";
} elseif ($humanType == "Archive" && $fileType == "XPS") {
$humanType = "Document";
} elseif ($this->type == "application/xml" && $fileType == "CONTACT") {
$humanType = "Contact";
} elseif ($this->type == "application/octet-stream" && $fileType == "JNT") {
$humanType = "Document";
}
if (strlen($fileType) > 4) {
$fileType = "";
}
return array($humanType, $fileType);
如果我们然后替换特殊情况,如果elseif与以下:
// Special Cases
switch(true) {
case ($humanType == "Archive" && $fileType == "APK"): // Android App
$humanType = "App";
break;
case ($humanType == "Archive" && $fileType == "XPS"):
$humanType = "Document";
break;
case ($this->type == "application/xml" && $fileType == "CONTACT"):
$humanType = "Contact";
break;
case ($this->type == "application/octet-stream" && $fileType == "JNT"):
$humanType = "Document";
break;
}
PHP Mess Detector报告了1960年的NPath复杂性。
为什么是这样?什么使switch(true)比我所看到的仅仅是一个相同的控制结构那么复杂?
php truepath,php – 为什么switch(true)具有比if()elseif()更小的NPath复杂度?相关推荐
- while (true) 和 for (;;) 到底哪个更快?
作者 | RednaxelaFX 来源 | https://zhihu.com/question/52311366/answer/130090347 在JDK8u的jdk项目下做个很粗略的搜索: my ...
- getdevicecaps在哪个头文件里_一招定胜负,while (true) 和 for (;;) 到底哪个更快
在JDK8u的jdk项目下做个很粗略的搜索: mymbp:/Users/me/workspace/jdk8u/jdk/src$ egrep -nr "for (s?;s?;" . ...
- vue hot true 不起作用_Vue + Flask 小知识(二)
微信公众号:萝卜大杂烩 关注可了解更多的原创内容.问题或建议,请公众号留言或加本人微信;如果你觉得文章对你有帮助,欢迎加微信交流 今天继续分享 Vue.js 学习笔记,结合 handsontable. ...
- python 下列表达式的值为true的是_下列表达式的值为True的是( )。_学小易找答案...
[简答题] [多选题]Benson将失读症分为( ) [填空题]下列 Python 语句的输出结果是 . print(" 数量 {0}, 单价 {1} ".format(100,2 ...
- ps4计算机,一台电脑价格等于Switch+PS4 PC和主机谁更省钱
不少主机玩家认为,PC玩家需要花费更多的钱来组装一台电脑,才能体验到主机游戏的乐趣.然而,他们忽视了游戏打折这一环节. 让我们先来看看主机的价格:一台PS4 Slim大约230英镑,一台PS4 Pro ...
- 去除字符串中重复字符
题目http://www.cricode.com/260.html 设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间.注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝 ...
- Placement Rules 使用文档
注意 本文介绍如何手动在 Placement Driver (PD) 中设置 Placement Rules.推荐使用 Placement Rules in SQL,让你更方便地设置表和分区的放置. ...
- 二叉搜索树BST的学习
文章目录 二叉搜索树BST 什么是BST? 用BST做什么? 一.BST的特性 BST的特性是什么? 1.[230. 二叉搜索树中第K小的元素](https://leetcode.cn/problem ...
- APP优化篇——优化关键评估指标
目前,随着APP行业的竞争越来越激烈,功能也越发丰富,人们评价一款产品的优秀程度,已经不能单纯通过 "是否具备某些功能" 来评价某个产品了,纯技术壁垒的产品已经是凤毛麟角,从用户角 ...
最新文章
- opengl加载显示3D模型Q3O类型文件
- 算法设计与分析:芯片测试问题、选择问题详解
- python调用arcgis_arcgis python 调用工具两种两种方法
- Java基础语法实例(2)——实习第二天
- Java实例分析:宠物商店
- 闭包、作用域链、函数
- php 修改 wordpress,wordpress如何修改php.ini
- 2022年电子商务概论(农)之形考作业二
- Axure实战002:APP原型设计思路
- PKPM学习:关于“悬空柱”的问题
- OOP,Object Oriented Programming 面向对象的三大特性 五大基本原则
- 论文解读:Combining Distant and Direct Supervision for Neural Relation Extraction
- 系统服务器算固定资产吗,服务器操作系统算固定资产
- 我最欣赏的一句话:天道酬勤
- mantis 重启mysql_Mantis -- linux
- Linux 服务器 OOM 分析
- 18款最值得推荐的免费视频编辑软件
- 基于Matlab的QPSK系统设计(多径瑞利信道,采用jakes模型以及指数模型)
- 键盘突然失灵-解决方法:卸载->重启
- 海外服务器被攻击怎么办?IP被封要如何处理?
热门文章
- python100个必背知识-学Python必背的初级单词,你都背了吗?
- 学python可以做什么职业好-学了那么多年python到底可以找什么工作?
- python 程序流程控制结构-python之流程控制语句
- python电脑版微信-python如何实现远程控制电脑(结合微信)
- python解释器是什么-python解释器都有什么
- 如何自学python爬虫-菜鸡的Python爬虫之路(一)如何零基础自学Python
- python编程100例头条-今日头条python面试题之编程篇
- python培训出来的有公司要吗-Python培训班出来好找工作吗?
- python爬虫项目-32个Python爬虫项目让你一次吃到撑
- python基础教程第二版下载-Python基础教程(第2版)