详解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 相关文章推荐
SMARTY学习手记
Jan 04 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
php生成随机数的三种方法
Sep 10 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
php curl 上传文件代码实例
Apr 27 PHP
WordPress中制作导航菜单的PHP核心方法讲解
Dec 11 PHP
[原创]php简单防盗链验证实现方法
Jul 09 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
PDO::setAttribute讲解
Jan 29 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 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
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
js下用gb2312编码解码实现方法
2009/12/31 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
Python实现注册登录系统
2017/08/08 Python
使用matplotlib画散点图的方法
2018/05/25 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
Django模板语言 Tags使用详解
2019/09/09 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
Django URL参数Template反向解析
2020/11/24 Python
实习生体会的自我评价范文
2013/11/28 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
家庭困难证明
2014/10/12 职场文书
护士实习自荐信
2015/03/06 职场文书
话题作文之诚信
2019/11/28 职场文书
无线电知识基础入门篇
2022/02/18 无线电