详解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
PHP新手上路(十四)
Oct 09 PHP
php实现用户在线时间统计详解
Oct 08 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 PHP
Laravel框架源码解析之入口文件原理分析
May 14 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读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
php二维数组排序详解
2013/11/06 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
Nuxt.js实战和配置详解
2019/08/05 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
Python短信轰炸的代码
2020/03/25 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
python如何对链表操作
2020/10/10 Python
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
学生出入校管理制度
2014/01/16 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android