2

当我运行 test.php 时,为什么总是在 !class_exists 行出错?

这是test.php:

<?php    //test.php
    require_once './app/Mage.php';
    Mage::app()->setCurrentStore(0);
    Mage::setIsDeveloperMode(true);


    require_once("test-class.php");
?>

这是 test-class.php:

<?php    //test-class.php
        if (!class_exists("AClass")) {
            class AClass {
                public function AnAction() {
                   return 123;
                }
            }
         }
?>
4

1 回答 1

3

因为 Magento 引导app/Mage.php 注册了一个 autoloader,所以您对class_exists()triggers 的调用会尝试为这个类加载一个类定义。可以通过传递来更改此行为false

<?php    //test-class.php
    if (!class_exists("AClass",false)) {
        class AClass {
            public function AnAction() {
               return 123;
            }
        }
     }
?>

此外,引导程序设置包含路径参数以供自动加载器使用:

$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
$paths[] = BP . DS . 'lib';

将您的类定义放在上述任何目录中将允许在需要定义时对其进行定义。

于 2013-01-03T02:57:18.357 回答