详解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 相关文章推荐
同台服务器使用缓存APC效率高于Memcached的演示代码
Feb 16 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
PHP 文件系统详解
Sep 13 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
Jun 28 PHP
thinkphp验证码显示不出来的解决方法
Mar 29 PHP
php实现文件下载实例分享
Jun 02 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
Mar 16 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
php超快高效率统计大文件行数
Jul 05 PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 PHP
PHP goto语句用法实例
Aug 06 PHP
php的单例模式及应用场景详解
Feb 27 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获取twitter最新消息的方法
2015/04/14 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
python scatter散点图用循环分类法加图例
2019/03/19 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
Django继承自带user表并重写的例子
2019/11/18 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
Python如何使用input函数获取输入
2020/08/06 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
Shein英国:女性时尚网上商店
2019/04/10 全球购物
《童趣》教学反思
2014/02/19 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
办护照工作证明
2014/10/01 职场文书
拾金不昧感谢信
2015/01/21 职场文书
小学语文新课改心得体会
2016/01/22 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript