PHP7.1.5。
在写数据报表,无意中这样写,发现这个东东。 我觉得我对 PHP 的理解还不够深入,所以发出来想听听大家的建议,学习下!
<?php
class A{
//1
public function run(){
$x = 0;
while(1){
$x ++ ;
$this->func1();
if($x > 10){
exit;
}
}
}
//2
public function func1(){
$arr1 = [];
$arr2 = [];
$arr3 = [];
$arr4 = [];
$arr5 = [];
$arr6 = [];
$arr7 = [];
$arr8 = [];
$arr9 = [];
//以上一样结构的数组 ,有数据
if(!function_exists('findAndGive')){
function findAndGive(&$arr){
//....
}
}
findAndGive($arr1);
findAndGive($arr2);
findAndGive($arr3);
findAndGive($arr4);
//...省略
}
}
findAndGive()这个方法会报错: Cannot redeclare
我现在只好用$func1 = function(){}先了。
没事了,我现在也好了。我不知道刚是咋了。。。
1
mingyun 2018-08-19 00:38:51 +08:00
类方法里定义普通方法,好怪
|
2
godgrp 2018-08-19 09:38:14 +08:00 via Android
去掉 functions exists 判断
|
3
Joyboo 2018-09-13 19:00:54 +08:00
OOP 了解一下,有相同,继承它,重写它
|
4
konakona OP @Joyboo 不是不是,亲,真不是基础问题。我写了快 10 个年头了。问题出在我理解不了的地方,可能跟 PHP 不同版本的回收机制有关。当时遇到问题的相同代码,给项目组另一位同事 run 是完全没问题的。我 run 就不行。等我将 function 移到外部 php 然后 require_once 后,问题就解决了。过了几个小时后,我通过 phpstorm 的 local history,找回当时报错的代码版本,再次 run。问题又没有了。所以代码是没问题,只是会出现这种不稳定的情况以我这种没参加过 PHP 核心小组的普通人来讲,理解不了。但是后来我知道,这种时候,我应该微笑……啊不是应该用 function () use (){}
|