每次在页面中用include_once("...");这样如果引用的类太多,就容易忘记include某个类,所以我想用__autoload()方法,可是我一写function __autoload(){}就报错(在__autoload()下面画一条绿色的线,说明不存在该方法)。我用的IDE是jetBrains PhpStorm4.0.1(不知道这个有没有影响)不懂,求解。

解决方案 »

  1.   

    和 IDE 没有关系! 贴出代码。
    现在能说明的是, 缺少参数。
      

  2.   

    一般的方法都会给出提示,但是__autoload()方法却没有提示,我是新手,只是自己练习一下。下面是我写的代码:
    Student.php
    <?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
    <?php
    //include_once("Student.php");
    function __autoload($class){
            include_once("path".$class.".php");
    }
    $student = new Student();
      

  3.   

    你的代码是正确的,如果是编辑器对 __autoload 报错,则说明你的 php 不是 5.0 以上的,或者是编辑器的字典太老了
      

  4.   

    include_once($class.".php");   //当前路径这样写就可以了
      

  5.   

    php确实是5.0以上的,我用的是编译器是php-5.4.3-Win32-VC9-x86。
      

  6.   

    不对,刚才想错了!你说 可是我一写function __autoload(){}就报错(在__autoload()下面画一条绿色的线,说明不存在该方法)。这个理解不对吧?即便是不支持 __autoload() 的动作,至少声明一个函数是不会报错的
    应该是你的项目中的其他地方已经定义了这个函数,再定义就是重复定义了。所以报错
      

  7.   

    噢看到了,对了 phpstorm下面出现一条绿色的下划线,它不是提示你这个有问题,而是提示你这个单词有问题,鼠标移动上去后会出现两行选择操作,将这个单词添加入字典里就行了.Typo:Save "xxxx" to dic....算是phpstorm 的小bug吧
      

  8.   

    是的,谢谢啊,应该是__onLoad,不过我试了一下,__onload和__onLoad好像都可以调用,并且结果都是对的,只不过__onload单词不规范。
      

  9.   

    function __autoload($class){
      include_once("path".$class.".php");
    }
    错了,改为include_once("path/".$class.".php");