在线等PHP自动函数__autoload什么时候自动调用啊
function__autoload($name){include$name.php;}以上是一个自动调用的函数,,函数的内容是加载一个PHP文件,我不明白的是,这个方法...
function __autoload($name){
include $name.php;
}
以上是一个自动调用的函数,,函数的内容是加载一个PHP文件,我不明白的是,这个方法是自动调用的。所以自然不需要再__autoload("index")这样手机调用传参,既然是自动调用的,那么这个函数在什么条件下才会自动调用啊,那这个参数怎么传进去的啊。
我看着一个例子是
function __autoload($classname) {
include strtolower($classname)."class.php";
}
$classname = ucfirst($_GET['action']);
$shape = new $classname();
这里的$classname一个是参数,一个是变量竟然不是一个变量吧。但是我就是在new的时候就出错。说找不到对象。但是那个对象的类文件应该是没有问题啊 展开
include $name.php;
}
以上是一个自动调用的函数,,函数的内容是加载一个PHP文件,我不明白的是,这个方法是自动调用的。所以自然不需要再__autoload("index")这样手机调用传参,既然是自动调用的,那么这个函数在什么条件下才会自动调用啊,那这个参数怎么传进去的啊。
我看着一个例子是
function __autoload($classname) {
include strtolower($classname)."class.php";
}
$classname = ucfirst($_GET['action']);
$shape = new $classname();
这里的$classname一个是参数,一个是变量竟然不是一个变量吧。但是我就是在new的时候就出错。说找不到对象。但是那个对象的类文件应该是没有问题啊 展开
4个回答
展开全部
__autoload是一个魔术函数。
意思是你只需要定义魔术函数。然后就不必要每次include一大推类文件。实例化的时候,会自动引入。
比如你又A.class.php B.class.php 两个类
然后你只需要
//定义一个函数
function __autoload($className){
if(!class_exists($className)){
include_once $className.".class.php";
}
}
在本页面是 就直接实例化一个a类了。 $a=new A();
更多追问追答
追问
那是不是是执行$a=new A();的时候就自动的调用了魔术函数,然后把A传给了参数,然后就同时执行了这一条include_once A.class.php";把A.class.php文件里面的代码包含了。。所以能new成功。
那看来我的代码没错。要从类文件里找原因啊。
追答
实例化一个类的时候,如果文件中不包括类文件,就会调用__autoload函数去加载类库文件。
推荐于2016-12-02 · 知道合伙人互联网行家
关注
展开全部
如果需要使用一个类,只需要直接使用include/require将其包含进来即可。
class ClassA{
public function __construct(){
echo “ClassA load success!”;
}
}
//定义一个类ClassA,文件名为ClassA.php
class ClassA{
public function __construct(){
echo “ClassA load success!”;
}
}
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB load success!”;
}
}
//定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB load success!”;
}
}
定义两个测试用的类之后,我们来编写一个含有__autoload()方法的PHP运行程序文件如下:
function __autoload($classname){
$classpath=”./”.$classname.'.php';
if(file_exists($classpath)){
require_once($classpath);
}
else{
echo ‘class file'.$classpath.'not found!';
}
}
$newobj = new ClassA();
$newobj = new ClassB();
class ClassA{
public function __construct(){
echo “ClassA load success!”;
}
}
//定义一个类ClassA,文件名为ClassA.php
class ClassA{
public function __construct(){
echo “ClassA load success!”;
}
}
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB load success!”;
}
}
//定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB load success!”;
}
}
定义两个测试用的类之后,我们来编写一个含有__autoload()方法的PHP运行程序文件如下:
function __autoload($classname){
$classpath=”./”.$classname.'.php';
if(file_exists($classpath)){
require_once($classpath);
}
else{
echo ‘class file'.$classpath.'not found!';
}
}
$newobj = new ClassA();
$newobj = new ClassB();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当你实例化一个在当前文件内不存在的类时,就会执行这个函数,尝试加载类文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-17
展开全部
当页面中包含未引用的类名时,自动调用该函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询