详解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 第一节 php简介
Apr 28 PHP
php网站判断用户是否是手机访问的方法
Nov 01 PHP
实现PHP+Mysql无限分类的方法汇总
Mar 02 PHP
PHP解析RSS的方法
Mar 05 PHP
php递归遍历删除文件的方法
Apr 17 PHP
php比较相似字符串的方法
Jun 05 PHP
php设置页面超时时间解决方法
Sep 22 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
laravel自定义分页效果
Jul 23 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 PHP
PHP bin2hex()函数基础实例讲解
Feb 11 PHP
thinkphp 框架数据库切换实现方法分析
May 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下把数组保存为文件格式的实例应用
2010/02/08 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
JavaScript代码性能优化总结(推荐)
2016/05/16 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
Python进阶学习之特殊方法实例详析
2017/12/01 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
Python pandas如何向excel添加数据
2020/05/22 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
python爬取天气数据的实例详解
2020/11/20 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
介绍一下Ruby的多线程处理
2013/02/01 面试题
节约用电通知
2015/04/25 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
爱国主题班会教案
2015/08/14 职场文书
外出培训学习心得体会
2016/01/18 职场文书
二年级数学教学反思
2016/02/16 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis