详解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 加密与解密的斗争
Apr 17 PHP
PHP 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
Jul 10 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
php数组去重的函数代码
Feb 03 PHP
ThinkPHP的模版中调用session数据的方法
Jul 01 PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 PHP
微信支付开发订单查询实例
Jul 12 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 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随机取mysql记录方法小结
2014/12/27 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
python中set()函数简介及实例解析
2018/01/09 Python
Python for循环生成列表的实例
2018/06/15 Python
python版本五子棋的实现代码
2018/12/11 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
python3安装speech语音模块的方法
2018/12/24 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
如何使用python操作vmware
2019/07/27 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
在python image 中实现安装中文字体
2020/05/16 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
什么是继承
2013/12/07 面试题
2014村务公开实施方案
2014/02/25 职场文书
公司管理建议书范文
2014/03/12 职场文书
幼师求职自荐信
2014/05/31 职场文书
机关党员公开承诺书
2014/08/30 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
教师教育教学随笔
2015/08/15 职场文书
python之基数排序的实现
2021/07/26 Python
python库sklearn常用操作
2021/08/23 Python
Nginx缓存设置案例详解
2021/09/15 Servers