详解PHP如何更好的利用PHPstorm的自动提示


Posted in PHP onAugust 18, 2017

说明

写了一段时间的java之后,特别不习惯PHP本身的弱类型方式,在写代码的时候总觉得不怎么放心,特别本身PHP又是弱类型的语言,所以在编码的时候,很多时候是没有代码提示的。

一个一般例子

class Data {
  public $name;
  public $gender;
  public $age;
  public function __construct($name,$gender,$age) {
    $this->name = $name;
    $this->gender = $gender;
    $this->age = $age;
  }
}
class Test {
  public function run() {
    $data = [
      new Data('张三','男',18),
      new Data('李四','男',14),
      new Data('王五','男',17),
      new Data('大姨妈','女',23),
    ];
  }
  private function eachData($data) {
    foreach($data as $item) {
      echo $item->name.'=>'.$item->gender.'=>'.$item->age."\n";
    }
  }
}
(new Test)->run();

以上例子来看,一般来说其实也是不存在什么问题的,但是在编写

cho $item->name.'=>'.$item->sex.'=>'.$item->age."\n";

这段代码的时候,在调用属性的时候是没有自动提示的,那么数据量大的时候需要往上翻然后进行copy或者编写下来,降低编码速度,而且有时候心里还没谱,怕写错。

以下是我写的一个完整的利用注释和本身PHP特性的例子:

class Data {
  public $name;
  public $gender;
  public $age;
  public function __construct($name,$gender,$age) {
    $this->name = $name;
    $this->sex = $gender;
    $this->age = $age;
  }
}
class Test {
  public function run() {
    $data = [
      new Data('张三','男',18),
      new Data('李四','男',14),
      new Data('王五','男',17),
      new Data('大姨妈','女',23),
    ];
  }
  /**
   * 遍历输出数据
   * @param array $data
   */
  private function eachData($data) {
    foreach($data as $item) {
      if($item instanceof Data) {
        echo $item->name.'=>'.$item->gender.'=>'.$item->age."\n";
      }
    }
  }
}
(new Test)->run();

这里主要的是加了一个if判断,判断数据类型是否是Data的一个具体实例;

在这个地方,PHPstorm会根据这个判断在做$item属性调用的时候会有自动提示,非常的方便。

思考

从这里得到的一些思考,那就是我们在编写程序的时候可以更好的考虑严谨性,从上面的例子来看,这样子做了,再加一些错误处理机制,能更好的保证数据的安全性和完整性,不仅仅是编辑器提示的方便。

后续再做代码检查和跟踪的时候,将也是一件非常方便的事情,而且业务逻辑也更清晰。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
由php if 想到的些问题
Mar 22 PHP
PHP 文件扩展名 获取函数
Jun 03 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
php提交表单时保留多个空格及换行的文本样式的方法
Jun 20 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
Nov 08 PHP
php学习笔记之mb_strstr的基本使用
Feb 03 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 PHP
Laravel学习教程之本地化模块
Aug 18 #PHP
PDO操作MySQL的基础教程(推荐)
Aug 18 #PHP
Laravel学习教程之路由模块
Aug 18 #PHP
Django中的cookie与session操作实例代码
Aug 17 #PHP
Django 中 cookie的使用
Aug 17 #PHP
PHP面向对象中new self()与 new static()的区别浅析
Aug 17 #PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
Aug 17 #PHP
You might like
两种设置php载入页面时编码的方法
2014/07/29 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
Javascript Math对象
2009/08/13 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
python网络编程学习笔记(四):域名系统
2014/06/09 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
查看python下OpenCV版本的方法
2018/08/03 Python
Python正则表达式指南 推荐
2018/10/09 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
python hashlib加密实现代码
2019/10/17 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
林肯就职演讲稿
2014/05/19 职场文书
爬山的活动方案
2014/08/16 职场文书
学党史心得体会
2014/09/05 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python