作者:ndmlhr | 来源:互联网 | 2023-02-07 18:39
每次在页面中用include_once();这样如果引用的类太多,就容易忘记include某个类,所以我想用__autoload()方法,可是我一写function__autoload
每次在页面中用include_once("...");这样如果引用的类太多,就容易忘记include某个类,所以我想用__autoload()方法,
可是我一写function __autoload(){}就报错(在__autoload()下面画一条绿色的线,说明不存在该方法)。
我用的IDE是jetBrains PhpStorm4.0.1(不知道这个有没有影响)
不懂,求解。。。。
11 个解决方案
和 IDE 没有关系! 贴出代码。
现在能说明的是, 缺少参数。
一般的方法都会给出提示,但是__autoload()方法却没有提示,我是新手,只是自己练习一下。下面是我写的代码:
Student.php
class Student
{
var $id;
var $stuName;
var $stuAge;
var $sex;
var $classes;
public function setClasses($classes)
{
$this->classes = $classes;
}
public function getClasses()
{
return $this->classes;
}
public function setId($id)
{
$this->id = $id;
}
public function getId()
{
return $this->id;
}
public function setSex($sex)
{
$this->sex = $sex;
}
public function getSex()
{
return $this->sex;
}
public function setStuAge($stuAge)
{
$this->stuAge = $stuAge;
}
public function getStuAge()
{
return $this->stuAge;
}
public function setStuName($stuName)
{
$this->stuName = $stuName;
}
public function getStuName()
{
return $this->stuName;
}
}
Test.php
//include_once("Student.php");
function
__autoload($class){
include_once("path".$class.".php");
}
$student = new Student();
你的代码是正确的,如果是编辑器对 __autoload 报错,则说明你的 php 不是 5.0 以上的,或者是编辑器的字典太老了
include_once($class.".php"); //当前路径这样写就可以了
php确实是5.0以上的,我用的是编译器是php-5.4.3-Win32-VC9-x86。
不对,刚才想错了!
你说
可是我一写function __autoload(){}就报错(在__autoload()下面画一条绿色的线,说明不存在该方法)。
这个理解不对吧?即便是不支持 __autoload() 的动作,至少声明一个函数是不会报错的
应该是你的项目中的其他地方已经定义了这个函数,再定义就是重复定义了。所以报错
噢看到了,对了 phpstorm
下面出现一条绿色的下划线,它不是提示你这个有问题,而是提示你这个单词有问题,鼠标移动上去后会出现两行选择操作,将这个单词添加入字典里就行了.
Typo:Save "xxxx" to dic....
算是phpstorm 的小bug吧
是的,谢谢啊,应该是__onLoad,不过我试了一下,__onload和__onLoad好像都可以调用,并且结果都是对的,只不过__onload单词不规范。
function __autoload($class){
include_once("path".$class.".php");
}
错了,改为include_once("path/".$class.".php");