婷姐 发表于 2025-1-16 08:40:15

声明我不是故意针对喷子实话实话


声明我不是故意针对喷子实话实话,我就这么回答的

我也知道这个是网站行业的钉子户,骨灰级的大佬了。不是针对只是就事论事

TyCoding 发表于 2025-1-16 08:40:39

跟不上时代了吧又或许找不到更好的方式去学,别人教又一根筋,咱们理解一下新人~!(看看就好,掌握程度的段位不同了,咱们还是尽量 委婉些 引导)

TyCoding 发表于 2025-1-16 08:41:36

比如面向过程的写法 。=以帝国为例    /*** 日志* @param array $info*/    private function debug(array $info){    $time = date('Y-m-d H:i:s');    array_unshift($info, $time);    $info = array_map('json_encode', $info);    file_put_contents(self::LOG_PATH . 'websocket_debug.log', implode(' | ', $info) . "\r\n", FILE_APPEND);    }      //增加adds      private function AddAddsData($data){      if(!MAGIC_QUOTES_GPC){    $data=addslashes($data);      }      return $data;    }      //处理编码字符      private function CkPostStrChar($val){      if(substr($val,-1)=="\"){      $this->shutdownServer();//强制断开所有链接      }    }      //验证编码字符      private function CkPostStrCharYh($val){      if($val!=addslashes($val)){      exit(0);      }      return $val;    }      //htmlspecialchars处理      private function ehtmlspecialchars($val,$flags=ENT_COMPAT){      if(PHP_VERSION>='5.4.0'){      $val=htmlspecialchars($val,$flags,'UTF-8');      }else{      $val=htmlspecialchars($val,$flags);      }      return $val;    }      //入库处理提交字符      private function RepPostStr($val,$ecms = 0, $phck = 0){      if($phck==1){      $this->CkPostStrCharYh($val);      }      $val=$this->ehtmlspecialchars($val,ENT_QUOTES);      if($ecms==0){      $this->CkPostStrChar($val);      $val=$this->AddAddsData($val);      $this->FWClearGetText($val);//触发防火墙      }      return $val;    }      //入库处理提交字符2      private function RepPostStr2($val, $phck = 0){      if($phck==1){      $this->CkPostStrCharYh($val);      }      $this->CkPostStrChar($val);      $val=$this->AddAddsData($val);      $this->FWClearGetText($val);//触发防火墙      return $val;    }      //参数处理函数默认    private function RepPostVar($val){                if($val!=addslashes($val)){      return'';// 结束函数执行      }      $this->CkPostStrChar($val);      $val=str_replace("%","",$val);      $val=str_replace(" ","",$val);      $val=str_replace("`","",$val);      $val=str_replace("\t","",$val);      $val=str_replace("%20","",$val);      $val=str_replace("%27","",$val);      $val=str_replace("*","",$val);      $val=str_replace("'","",$val);      $val=str_replace(""","",$val);      $val=str_replace("/","",$val);      $val=str_replace(";","",$val);      $val=str_replace("#","",$val);      $val=str_replace("--","",$val);      $val=$this->RepPostStr($val,1);      $val=addslashes($val);      $this->FWClearGetText($val);//触发防火墙      return $val;    }    //参数处理函数2    public function RepPostVar2($val){      if($val!=addslashes($val)){      $this->shutdownServer();//强制断开所有链接      }    $this->CkPostStrChar($val);      $val=str_replace("%","",$val);      $val=str_replace("`","",$val);      $val=str_replace("\t","",$val);      $val=str_replace("%20","",$val);      $val=str_replace("%27","",$val);      $val=str_replace("*","",$val);      $val=str_replace("'","",$val);      $val=str_replace(""","",$val);      $val=str_replace("/","",$val);      $val=str_replace(";","",$val);      $val=str_replace("#","",$val);      $val=str_replace("--","",$val);      $val=$this->RepPostStr($val,1);      $val=addslashes($val);      $this->FWClearGetText($val);//触发防火墙      return $val;    }$this->ehtmlspecialchars($val, ENT_QUOTES)这里调用了 ehtmlspecialchars 方法,这个方法可能是自定义的,从代码中使用 $this 来看,它是一个类的成员方法。那如果是帝国这样面向过程的直接函数不是更好吗?ehtmlspecialchars($val, ENT_QUOTES)。这样不仅仅更方便草根理解还不用重点去研究类里面的函数。

拾光 发表于 2025-1-16 08:41:52

转AskTs吧可能还有突围的希望

独家记忆 发表于 2025-1-16 08:42:43

我以前也觉得面向对象牛逼,但实践的时候才发现,又不是什么大项目,怎么舒服怎么来

TyCoding 发表于 2025-1-16 08:43:05

跟什么编程语言有啥关系呢?

独家记忆 发表于 2025-1-16 08:43:56

本帖最后由 美文苑文学网 于 2025-1-15 22:28 编辑

面向对象不是都无敌的 比如tp框架也没有把所有的方法封装到一个类的。比如即时通讯没有封装进去吧。 只是自定义函数多了,就开发者才容易搞清楚,不方便其他人易用而已

浅生 发表于 2025-1-16 08:44:03

其实,wp的hook思想也挺牛的,比面向对象舒服多了

婷姐 发表于 2025-1-16 08:44:18

这也是有些php大佬都喜欢面向过程。因为他不会想到前端页面。他只需要实现某个功能就可以了

TyCoding 发表于 2025-1-16 08:44:29


就像帝国这样大都函数引用了全局变量,但是也没有存在命名冲突等问题。除了维护性差而已其他还好吧。
页: [1] 2
查看完整版本: 声明我不是故意针对喷子实话实话