详解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 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
Php做的端口嗅探器--可以指定网站和端口
Oct 09 PHP
用PHP和ACCESS写聊天室(六)
Oct 09 PHP
PHP5中的时间相差8小时的解决办法
Mar 28 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
浅谈discuz密码加密的方式
May 22 PHP
php数组中包含中文的排序方法
Jun 03 PHP
在win7中搭建Linux+PHP 开发环境
Oct 08 PHP
php实现zip文件解压操作
Nov 03 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
PHP封装的MSSql操作类完整实例
May 26 PHP
PHP实现JS中escape与unescape的方法
Jul 11 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
php验证码实现代码(3种)
2015/09/07 PHP
JS定时器实例
2013/04/17 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
python实现拼接图片
2020/03/23 Python
python对execl 处理操作代码
2020/06/22 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
python开发入门——set的使用
2020/09/03 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
公司活动策划方案
2014/01/13 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
文言文辞职信
2015/02/28 职场文书
催款函范文
2015/06/24 职场文书
2016年党建工作简报
2015/11/26 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
二年级作文之动物作文
2019/11/13 职场文书
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis