详解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 相关文章推荐
杏林同学录(五)
Oct 09 PHP
PHP+MySQL5.0中文乱码解决方法
Nov 20 PHP
如何使用PHP往windows中添加用户
Dec 06 PHP
实用函数5
Nov 08 PHP
PHP5中GD库生成图形验证码(有汉字)
Jul 28 PHP
PHP获取中英混合字符串长度的方法
Jun 07 PHP
PHP进程同步代码实例
Feb 12 PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 PHP
PHP+JS实现的商品秒杀倒计时用法示例
Nov 15 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
Thinkphp5 自定义上传文件名的实现方法
Jul 23 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 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
自己动手,丰衣足食 - 短波框形天线制作
2021/03/01 无线电
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
PHP的可变变量名的使用方法分享
2012/02/05 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
2016/10/13 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
python中ConfigParse模块的用法
2014/09/29 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
2019/09/05 Python
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
涉外文秘个人求职的自我评价
2013/10/07 职场文书
领导干部培训感言
2014/01/23 职场文书
课外访万家心得体会
2014/09/03 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
总结Java对象被序列化的两种方法
2021/06/30 Java/Android
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫