声明我不是故意针对喷子实话实话
声明我不是故意针对喷子实话实话,我就这么回答的
我也知道这个是网站行业的钉子户,骨灰级的大佬了。不是针对只是就事论事 跟不上时代了吧又或许找不到更好的方式去学,别人教又一根筋,咱们理解一下新人~!(看看就好,掌握程度的段位不同了,咱们还是尽量 委婉些 引导) 比如面向过程的写法 。=以帝国为例 /*** 日志* @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)。这样不仅仅更方便草根理解还不用重点去研究类里面的函数。 转AskTs吧可能还有突围的希望 我以前也觉得面向对象牛逼,但实践的时候才发现,又不是什么大项目,怎么舒服怎么来 跟什么编程语言有啥关系呢? 本帖最后由 美文苑文学网 于 2025-1-15 22:28 编辑
面向对象不是都无敌的 比如tp框架也没有把所有的方法封装到一个类的。比如即时通讯没有封装进去吧。 只是自定义函数多了,就开发者才容易搞清楚,不方便其他人易用而已 其实,wp的hook思想也挺牛的,比面向对象舒服多了 这也是有些php大佬都喜欢面向过程。因为他不会想到前端页面。他只需要实现某个功能就可以了
就像帝国这样大都函数引用了全局变量,但是也没有存在命名冲突等问题。除了维护性差而已其他还好吧。
页:
[1]
2