详解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 相关文章推荐
在apache下限制每个虚拟主机的并发数!!!!
Oct 09 PHP
基于mysql的bbs设计(三)
Oct 09 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
Mar 30 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
php使用正则过滤js脚本代码实例
May 10 PHP
PHP两种快速排序算法实例
Feb 15 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
PHP操作Redis常用技巧总结
Apr 24 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
joomla内置的表单验证功能使用方法
2010/06/11 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
Bootstrap每天必学之下拉菜单
2015/11/25 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
swiper自定义分页器的样式
2020/09/14 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
python使用Tesseract库识别验证
2018/03/21 Python
python实现周期方波信号频谱图
2018/07/21 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
四年级科学教学反思
2014/02/10 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
心灵捕手观后感
2015/06/02 职场文书
会计做账心得体会
2016/01/22 职场文书
python中的None与NULL用法说明
2021/05/25 Python
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android
python程序的组织结构详解
2021/12/06 Python
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis