详解PHP如何更好的利用PHPstorm的自动提示

作者:kumfo 时间:2024-05-22 10:05:30 

说明

写了一段时间的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属性调用的时候会有自动提示,非常的方便。

思考

从这里得到的一些思考,那就是我们在编写程序的时候可以更好的考虑严谨性,从上面的例子来看,这样子做了,再加一些错误处理机制,能更好的保证数据的安全性和完整性,不仅仅是编辑器提示的方便。

后续再做代码检查和跟踪的时候,将也是一件非常方便的事情,而且业务逻辑也更清晰。

来源:https://segmentfault.com/a/1190000010723243

标签:PHP,PHPstorm,自动提示
0
投稿

猜你喜欢

  • 层次分析法在matlab上的实现方式

    2022-08-31 08:57:16
  • JavaScript eval() 函数介绍及应用示例

    2024-04-19 10:00:01
  • python中的hashlib和base64加密模块使用实例

    2022-10-19 05:08:23
  • python tkinter实现简单计算器功能

    2022-06-16 22:34:09
  • CSS Border使用小分享

    2010-08-12 14:34:00
  • 解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题

    2022-10-24 05:34:54
  • Python3 虚拟开发环境搭建过程(图文详解)

    2021-11-19 00:34:51
  • PyTorch搭建一维线性回归模型(二)

    2023-02-16 19:27:15
  • Python合并Excel表(多sheet)的实现

    2023-08-06 21:59:11
  • 利用Python将图片批量转化成素描图的过程记录

    2022-08-21 09:53:59
  • 详解python 内存优化

    2022-06-04 16:31:43
  • Python OpenCV实现3种滤镜效果实例

    2021-06-04 10:20:27
  • Python搭建HTTP服务器和FTP服务器

    2022-05-06 14:21:54
  • python+requests接口压力测试500次,查看响应时间的实例

    2021-09-29 08:27:56
  • pytorch模型保存与加载中的一些问题实战记录

    2021-09-03 21:41:50
  • sysbench-0.4.12编译安装和CPU测试例子分享

    2024-01-24 10:06:21
  • 浅析PyTorch中nn.Module的使用

    2021-10-29 14:04:53
  • Python 发送邮件方法总结

    2022-04-05 21:17:06
  • Python pysnmp使用方法及代码实例

    2022-02-07 16:36:14
  • Django与数据库交互的实现

    2024-01-15 19:23:20
  • asp之家 网络编程 m.aspxhome.com