返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP和Java代码实例分析
  • 750
分享到

PHP和Java代码实例分析

2023-06-16 22:06:31 750人浏览 薄情痞子
摘要

这篇文章主要介绍“PHP和Java代码实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php和Java代码实例分析”文章能帮助大家解决问题。命名案例1function getGood

这篇文章主要介绍“PHP和Java代码实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php和Java代码实例分析”文章能帮助大家解决问题。

命名

案例1

function getGoods($query, $shopId) {     $goodsId = Goods::add($query["uid"], $query["name"]);     return Shop::add($goodsId, $shopId); }  class Goods {     public static function add($uid, $name)     {         $id = mt_rand(1, 100000);         return $id;     } }  class Shop {     public static function add($goodsId, $shopId)     {         $id = mt_rand(1, 100000);         return $id;     } }

PHP和Java代码实例分析

案例2

function getUserInfo($teamId, $youId = []) {  }

如果仅仅有这个函数名和参数名,谁能猜到参数的意义呢?

PHP和Java代码实例分析

案例3

class Db {          public static function insert(string $table, array $data)     {         $id = mt_rand(1, 1000);         return $id;     } }  class ViewLogStore {     private $table = "view_log";      function setHistory($data)     {         Db::insert($this->table, $data);     } }

PHP和Java代码实例分析

案例4

假如业务代码里有这些类

class WechatUserModel{ } class WechatGroupModel{ } class WechatMessageModel{ }

而我们查询数据库发现

PHP和Java代码实例分析

这样我们根据业务代码就非常不方便找到对应的表,而且其他人接手我们项目的时候,也会摸不着头脑。或者说这可能是三个人三次迭代开发造成的,那么他们彼此都没有去参考前面人的命名规则。

来自灵魂的拷问

PHP和Java代码实例分析

注释

说完命名,下面说下注释。注释里还有什么学问?Are you kidding me?

一个数组对象成员,你知道怎么写吗?

类的魔术方法调用的注释,你知道怎么写吗?

对象数组 

 public $adsList = [];

PHP和Java代码实例分析

$blocks = [];

PHP和Java代码实例分析

@method 的使用

 class SearchServiceProxy {     public static function __callStatic($method, $arguments)     {         if (!method_exists("SearchService", $method)) {             throw new \LogicException(__CLASS__ . "::" . $method . " not found");         }          try {             $data = call_user_func_array(["SearchService", $method], $arguments);         } catch (\Exception $e) {             error_log($e->getMessage());             return false;         }          return $data;     } }

PHP和Java代码实例分析

@deprecated 使用 

class SearchService {           public static function search(string $query, $limit = 10, $offset = 0)     {         return [             ["id" => 1, "aaa"],             ["id" => 2, "bbb"],         ];     } }

PHP和Java代码实例分析

注释其他注意事项

注释解释张冠李戴,方法名更新,方法的功能业务注释没更新;复制别人的代码把 @author 信息也复制过来了,错误了还要把锅甩给别人。

注释更多参考 Http://manual.phpdoc.org/html...

函数、方法

案例1

先说明一句,不好的代码不妨碍它成为一个优秀的软件。PHP MySQL 烂代码多的去了。

找到一个开源软件里面的代码,功能非常抢到,但是这个方法内容太多,一些不足点我标注出来了。

PHP和Java代码实例分析

案例2

拿上面我举例子,还记得下面这种图吗?

PHP和Java代码实例分析

优化方案1

class ArrayUtils{     public static function fetch($arr, $keys, $setNull = false)     {         $ret = array();         foreach($keys as $key)         {             if ($setNull)             {                 $ret[$key] = $arr[$key];             }             else             {                 isset($arr[$key]) && $ret[$key] = $arr[$key];             }         }         return $ret;     } }   class ViewLogStore {     private $table = "view_log";      function record($data)     {         $fields = array(             'uid',             'url',             'referer',             'created_time'         );         $data = ArrayUtils::fetch($data, $fields);         Db::insert($this->table, $data);     } }

优化方案2

class Db {          public static function insert(string $table, Entity $data)     {         $array = $data->toArray();         var_export($array); // test          $id = mt_rand(1, 1000);         return $id;     } }  class ArrayUtils {          public static function Obj2Array($obj, $removeNull = true, $camelCase = true)     {         $reflect = new \ReflectionClass($obj);         $props = $reflect->getProperties(\ReflectionProperty::IS_PUBLIC | \ReflectionProperty::IS_PRIVATE | \ReflectionProperty::IS_PROTECTED);          $array = [];         foreach ($props as $prop) {             $prop->setAccessible(true);             $key = $prop->getName();              // 如果不是驼峰命名方式,就把对象里面的 createTime 转成 create_time             if (!$camelCase) {                 $key = preg_replace_callback("/[A-Z]/", function ($matches) {                     return "_" . strtolower($matches[0]);                 }, $key);                 $key = ltrim($key, "_");             }              $value = $prop->getValue($obj);              if ($removeNull == true && $value === null) {                 continue;             }              if (is_object($value)) {                 $value = self::Obj2Array($value);             }              $array[$key] = $value;         }          return $array;     } }  class Entity {     public function toArray(){         return ArrayUtils::Obj2Array($this);     } }  class ViewLogEntity extends Entity {          private $uid;           private $url;           private $referer;           private $createdTime;           public function setUid(int $uid)     {         $this->uid = $uid;     }           public function setUrl(string $url)     {         $this->url = $url;     }           public function setReferer(string $referer)     {         $this->referer = $referer;     }           public function setCreatedTime(string $createdTime)     {         $this->createdTime = $createdTime;     } }   class ViewLogStore {     private $table = "view_log";      function record(ViewLogEntity $viewLogEntity)     {         Db::insert($this->table, $viewLogEntity);     } }  // 测试  $viewLogEntity = new ViewLogEntity(); $viewLogEntity->setUid(1); $viewLogEntity->setReferer("https://mengkang.net"); $viewLogEntity->setUrl("https://segmentfault.com/l/1500000018225727"); $viewLogEntity->setCreatedTime(date("Y-m-d H:i:s",time()));  $viewLogStore = new ViewLogStore(); $viewLogStore->record($viewLogEntity);

案例3

这还是函数吗?(不仅仅是语义,属于错误)

 class Model {      public function __construct($table)     {      } }  function getUserList($startId, $lastId, $limit = 100) {     if ($lastId > 0) {         $startId = $lastId;     }      $sql = "select * from `user` where id > ? order by id asc limit ?,?";      $model = new Model('user');     return $model->fetchList($sql, [intval($startId), intval($limit)]); }

$startId和$lastId两个参数重复

案例4

尽量减少参数引用

function bad($input1, $input2, &$input3) {     //...logic      $input3 = "xxx";      return true; }

案例5

参数类型明确,返回值类型明确,不要出现 mixed。这个我直接拿官方的函数来举例,对权威也要有怀疑的眼光。纯属个人看法。

PHP和Java代码实例分析

案例6

PHP和Java代码实例分析

上面例子中你会发现这个addUser写得不想一个函数(方法)而像一个远程api接口。而且在右边的代码中需要每次使用的时候都要用is_array来判断。这是非常不友好的语义表达。PHP Java 这样的高级语言有异常,我们要善用异常。

PHP和Java代码实例分析

关于“PHP和Java代码实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网PHP编程频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: PHP和Java代码实例分析

本文链接: https://lsjlt.com/news/285740.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP和Java代码实例分析
    这篇文章主要介绍“PHP和Java代码实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP和Java代码实例分析”文章能帮助大家解决问题。命名案例1function getGood...
    99+
    2023-06-16
  • php实例代码分析
    本文小编为大家详细介绍“php实例代码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“php实例代码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。常做的和常想的事情晦涩的if条件1)对于||的处理&nbs...
    99+
    2023-06-17
  • java代码实例分析
    这篇文章主要介绍“java代码实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java代码实例分析”文章能帮助大家解决问题。一、几个坑爹代码的目录这样使用 StringBuffer 的方法有什...
    99+
    2023-06-16
  • Java代理模式实例代码分析
    今天小编给大家分享一下Java代理模式实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、动态代理模式动态代理的特...
    99+
    2023-06-29
  • PHP面试题实例代码分析
    本篇内容主要讲解“PHP面试题实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP面试题实例代码分析”吧!Q1: == 和 === 之间有什么区别?话题: PHP困难: ⭐如果是两个...
    99+
    2023-06-30
  • PHP算法题实例代码分析
    本篇内容主要讲解“PHP算法题实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP算法题实例代码分析”吧!题目给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 ...
    99+
    2023-07-05
  • PHP函数使用实例代码分析
    今天小编给大家分享一下PHP函数使用实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。PHP检测IP是否内网地址、保...
    99+
    2023-07-05
  • PHP类型转换实例代码分析
    今天小编给大家分享一下PHP类型转换实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。基本数据类型首先,我们需要了解...
    99+
    2023-07-05
  • Java代码编写技巧实例分析
    这篇文章主要讲解了“Java代码编写技巧实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java代码编写技巧实例分析”吧!开发工具不知道有多少”老”程序员还在使用 Eclipse,这些...
    99+
    2023-06-30
  • Java/JavaScript/ABAP代码重构实例分析
    本篇内容介绍了“Java/JavaScript/ABAP代码重构实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在方法里引入一个布尔类...
    99+
    2023-06-05
  • Java的位运算实例代码分析
    今天小编给大家分享一下Java的位运算实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。位运算很久以前学习过位运算,...
    99+
    2023-07-06
  • css代码实例分析
    这篇文章主要介绍“css代码实例分析”,在日常操作中,相信很多人在css代码实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css代码实例分析”的疑惑有所帮助!接下来,...
    99+
    2024-04-02
  • css实例代码分析
    今天小编给大家分享一下css实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 ...
    99+
    2024-04-02
  • HTML实例代码分析
    这篇文章主要讲解了“HTML实例代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML实例代码分析”吧!   CodePage:可读/可写。整型。...
    99+
    2024-04-02
  • Python实例代码分析
    这篇“Python实例代码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python实例代码分析”文章吧。1.交换两个变...
    99+
    2023-06-27
  • Promise实例代码分析
    这篇文章主要介绍“Promise实例代码分析”,在日常操作中,相信很多人在Promise实例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Promise实例代码分析”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-05
  • php时间戳转换实例代码分析
    本文小编为大家详细介绍“php时间戳转换实例代码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“php时间戳转换实例代码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、时间戳的概念Unix时间戳,也叫做...
    99+
    2023-07-05
  • Java责任链模式实例代码分析
    本文小编为大家详细介绍“Java责任链模式实例代码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java责任链模式实例代码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。优点降低耦合度。它将请求的发送者和...
    99+
    2023-06-29
  • Java观察者模式实例代码分析
    这篇“Java观察者模式实例代码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java观察者模式实例代码分析”文章吧。优...
    99+
    2023-06-29
  • div css实例代码分析
    这篇文章主要介绍了div css实例代码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇div css实例代码分析文章都会有所收获,下面我们一起来看看吧。关于“div css...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作