详解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新手上路(十三)
Oct 09 PHP
支持php4、php5的mysql数据库操作类
Jan 10 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
解析左右值无限分类的实现算法
Jun 20 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 PHP
实例讲解PHP页面静态化
Feb 05 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 PHP
laravel 错误处理,接口错误返回json代码
Oct 25 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
jquery 最简单的属性菜单
2009/10/08 Javascript
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
JS实现密码框效果
2020/09/10 Javascript
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
给领导的感谢信范文
2015/01/23 职场文书
求职自我评价怎么写
2015/03/09 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
新闻稿标题
2015/07/18 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python