WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 数码解说
    • 生活趣事
    • 生活日记
  • 全球科技
    • 新浪博客
    • A5资讯
    • 环球网新闻
  • 编程教学
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
  • 专题
  • 基友
  • 隐私
  • 云优化
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君

网站速度第4部分:PHP速度编程

夏柔4月 21, 2020

速度编程并不是大多数程序员所想的。他们通常首先考虑并且通常仅考虑的是使其正常运行。有时人们会谈论重构以减少代码量,但这再次通常仅适用于那些拥有太多金钱和时间的奢侈品的人。

我希望我有这么奢侈,能够花两倍的时间在一个问题上,以提供完美的解决方案。实际上,我不是大部分时间都在,因为我在那里有很多新客户,是否生产其他产品,或者是否有幸拥有一个财大气粗的客户。

为了解决这些问题,我脑中存储了许多方法,这些方法可以让我第一次选择最佳路径(我希望!)。我将与您分享这些最佳做法,以便您可以做同样的事情,甚至更好。如果您有关于编码的快速建议,请发表评论,我将其附加到这篇文章中。

另外,请注意,这不是详尽的清单。这更多地是您应该使用自己喜欢的编码语言考虑的事情的指针。尽管这是专门针对PHP的,但我已尝试使其尽可能通用,以使所有编码器(无论使用哪种语言)都可以受益。

制作IF ELSE小

IF可能是所有编程语言中最常用的语句,并且我认为是菜鸟程序员最常用的语句(嘿,我曾经一次,我记得我的代码)。

常见的IF ELSE用法

          if ( $something == true ){
              $value = 'yes';
          }else{
              $value = 'no';
          }

现在只使用 IF

          $value = 'no';
          if ( $something == true ){
              $value = 'yes';
          }

如您所见,所有已完成的工作就是将值预设为“否”,并且只有在某些情况为真时才更改为“是”。两位代码的结果相同,一位代码更少。

如果if语句中只有1条命令,则可以进行更多操作。当一行只有一行时,PHP不需要大括号。

          $value = 'no';
          if ( $something == true )
              $value = 'yes';

三元运算符

我们可以更进一步,并拥有三元运算符。这些是数学指令,可以像是一样回答是/否IF。

IF 呈现为三元运算

          $value = ( $something == true ) ? "yes" : "no" ;

同样,同样的IF ELSE说法,变得更小。它所做的是检查方括号内的语句是true还是false,如果为true,则将值设置为“ yes”,如果为false,则将值设置为“ no”。

三元运算符的语法

          output = ( true/false condition ) ? true-value : false-value ;

不一定要具有输出,因为true或false值可以调用函数而不返回值。

使用范围创建数字数组

人们通常会在其中编码只有一堆数字的数组,以便他们可以遍历它。

PHP代码创建选择下拉列表

          // selected item value
          $item = 12;
          // create array of numbers
          $array_of_numbers = array( 2,4,6,8,10,12,14,16 );
          // start the select 
          echo "<select name='myselect' >";
          foreach ($array_of_numbers as $number){
          // use terany operator to compare $number and $item, if the same make $selected = "selected"
          $selected = ( $number == $item ) ? "selected" : "" ;
          // echo option, with details filled in
          echo "<option value='" . $number . "' " . $selected . " >" . $number . "</option>";
          }
          echo "</select>";

现在同一件事随着范围变短

          // selected item value
          $item = 12;
          // start the select
          echo "<select name='myselect' >";
          foreach ( range(2,16,2) as $number){
          // use ternary operator to compare $number and $item, if the same make $selected = "selected"
          $selected = ( $number == $item ) ? "selected" : "" ;
          // echo option, with details filled in
          echo "<option value='" . $number . "' " . $selected . " >" . $number . "</option>";
          }
          echo "</select>";

范围是一件非常方便的事情,因为它会创建一个数字数组(整数)。它在php中具有以下语法:

          range($start_number, $end_number, $increment);

唯一必需的必填项是开始和结束号,增量默认为1,但可以是您喜欢的任何数字。

范围函数在大多数语言中都可用,但不幸的是,在开箱即用的Java语言中不可用,因此要在代码中进行相同的保存,最好使用FOR循环

FOR 循环版本

    // selected item value
          $item = 12;
          // start the select
          echo "<select name='myselect' >";
          for($number = 2; $number <= 16; $number = $number + 2){
          // use ternary operator to compare $number and $item, if the same make $selected = "selected"
          $selected = ( $number == $item ) ? "selected" : "" ;
          // echo option, with
          echo "<option value='" . $number . "' " . $selected . " >" . $number . "</option>";
          }
          echo "</select>";

涡轮增压FOR循环

许多人喜欢使用for循环,因为他们认为循环比循环快foreach。尽管这通常是正确的,但它并不能提供灵活性,foreach而且编程技术不当会导致速度变慢

较慢的FOR循环

         // some text as a string
            $text="We love SpeckyBoy";
            // loop through all the characters
            for($i=0; $i < strlen($text); $i++){
                // look for the o in the text string at the position of $i using a ternary operator
                // echo true or false value as needed
                echo ( substr($text,$i,1) == 'o' ) ? "its an o" : "no o here";
            }

更快的FOR循环

          // some text as a string
            $text="We love SpeckyBoy";
            // get the length of the string
            $length = strlen($text);
            // loop through all the characters
            for($i=0; $i < $length ; $i++){
                // look for the o in the text string at the position of $i using a ternary operator
                // echo true or false value as needed
                echo ( substr($text,$i,1) == 'o' ) ? "its an o" : "no o here";
            }

第二个for循环速度更快,因为它不需要在每次循环运行时都重新检查字符串长度。第一个循环将使用所使用的文本将字符串长度检查17次

使代码更易于维护和更快

重新访问它时,我的noob代码经常遇到相同的问题。代码全部写在一行上,而且很长。以下面的代码为例:

          $html = "<input name='" . $name . "' id='" . $id . "' value='" . $value . "' class='" . $theclass . "' type='checkbox' " . $checked . " />";
          echo $html;

它工作得很好,并且对任何实现都可以,但是存在一些问题。例如,如果类为空,则对空的类设置进行编码很浪费。尽管这可能与Javascript实现没有太大区别,但是由于这是使用PHP在服务器上生成的,因此您会向客户端浏览器发送不需要的额外字节。当然,在进行AJAX调用和等待答复时,这将发挥最大的作用,额外的字节可能会带来更大的影响。

维护更简单的方法

       $attributes = " name='" . $name  . "' ";
          $attributes .= " id='" . $id  . "' ";
          $attributes .= " value='" . $value  . "' ";
          $attributes .= ($theclass != '' )?  " class='" . $theclass  . "' " : "" ;
          $attributes .= ($selected == $value )?  " checked " : "" ;
          $html = "<input type='checkbox' " . $attributes  . " />";
          echo $html;

如您所见,在服务器端使用起来更容易阅读,更易于维护,并且使用它会产生更少的HTML代码。

不要只回显最终输出的每一行

echo与将每一行写入变量相比,与将每一行写入变量相比,每行或将控制权传递回HTML 都容易得多,但是将输出首先写入变量并仅在最后回显是更快的处理方式。

做事的简单方法,有一些变化

    echo "<h2>" . $title . "</h2>"; ?>
    <small><?php echo date(); ?><small>

服务器更友好的处理方式

    $output = "<h2>" . $title . "</h2>";
    $output .= "<small>" . date() . "<small>";
    echo $output;

好的,这是您应该做的非常简单的示例,因为它只有2行,然后输出。

围捕

这是一堆非常简短的内容,可帮助您更快更轻松地维护PHP编码。当然,您可以做更多的事情来减少使用的代码量或运行速度。

这些技术中的大多数都可以应用到其他编程语言中,因此,当您使用Javascript或.NET进行编码时,请三思而后行,将会使事情变得更快。

 

 

 

 

 

 

 

 

 

#网站加速
0
分享
夏柔 站长
文章 709评论 23
赞赏
夏柔
相关文章
  • 自定义onion域名
  • 宝塔linux面板一键工具箱
  • 7种提高代码阅读能力的方法
  • 保护你的WordPress,修改服务器默认用户名root
  • Python多线程扫描端口
  • ThnBo-一款针对WordPress开发的缩略图美化插件,为广大站长提供缩略图的美化便利
  • WordPress去除index.php的方法
  • WordPress美化-文字渐变特效
  • WordPress美化-抖动图片
  • 使用HBuilderX封装H5
20 6月, 2019
YouTube到底应该变成什么样?谷歌还没想清楚
夏柔
站长
夏山如碧 - 怀柔天下
709文章
23评论
58144K获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门30
WordPress技术教程265
前沿技术情报所7
城市创新——新消费8
最近有哪些不可错过的热文5
程序员的养生之道0
疫情实况
英国变异新冠病毒或致更高死亡率
1月 23, 2021
31省新增确诊107例 本土90例
1月 23, 2021
拜登公布战时抗疫计划
1月 22, 2021
更多
每日快讯
警方调查西藏冒险王网传视频
1月 23, 2021
北京新增3例本土确诊 均在大兴
1月 23, 2021
英国变异新冠病毒或致更高死亡率
1月 23, 2021
云南昭通市盐津县发生4.7级地震
1月 23, 2021
外媒:特朗普弹劾案审讯2月8日开始
1月 23, 2021
31省新增确诊107例 本土90例
1月 23, 2021
美共和党议员提交弹劾拜登条款
1月 22, 2021
江苏镇江一人核酸检测结果可疑
1月 22, 2021
更多
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2021 WordPress极简博客. Designed by 骚老板. 辽公网安备21010502000474号