可以使用面向对象的语法调用Zend_Loader_Autoloader吗?

时间:2012-10-24 02:51:48

标签: php zend-framework zend-autoloader

是否有另一种方法可以调用Zend的Framework Autoloader。我有这个网页,我加载Zend_Loader_Autoloader,然后调用静态方法:: getInstance()。 在弄清楚为什么我的脚本不起作用之后遇到了很多麻烦,我设置了这样的测试:

<?php 
$libreria='/home/u230474/public_classes/Zend/ZendFramework/library';
set_include_path(get_include_path().PATH_SEPARATOR.$libreria);
require_once('Zend/Loader/Autoloader.php');
$libload = Zend_Loader_Autoloader::getInstance();
if(!$libload) echo "Librer&iacute;a Zend Framework cargada"; else echo "Error al cargar la librer&iacute;a";

哪个输出“错误al cargarlalibrería”。

我还实现了脚本installlationchecker.php,我在其中添加了前一代码的前两行,并且在姐妹文件夹上安装了Zend Framework到公共文件夹,安装测试通过。

但我的问题是,我可以将Autoloader称为对象,比如说:

$libload = New Zend_Loader_Autoloader();

$libload->getInstance();

Zend Framework的文档中似乎没有关于这种替代语法的内容。

我打算这样做,因为库不会在我需要的几个脚本上加载,这只发生在远程服务器上,在我的测试服务器上运行正常。我做了这样的测试:

include ('header.php');
//codigo para probar equidad de nombre de archivo---------->
$filename = basename($_SERVER['SCRIPT_FILENAME']);
$request = basename($_SERVER['SCRIPT_NAME']);
if($filename != $request)
  die('Case of filename and request do not match!');
echo ('<div class="cuerpo"><div class="mensajes">');
if(isset($_POST['autoresArt'])&&isset($_POST['tituloArt'])&&isset($_POST['correoArt'])&&isset($_POST['descArt'])) {
require_once('libreria.php');

查看我的脚本(在Windows上开发)和Linux服务器中的脚本是否存在大写问题,但似乎没有问题。

顺便说一句,在要求或包含库之前输出的唯一代码是'header.php',它只是用于显示输出的html文档,还有一些javascript来控制它。

Pd积。对不起,我已经检查过了,正如Matt所说它正在输出库 设置。但是我一直试图让这段代码工作好几天,因为它在远程服务器上失败而不在我的测试服务器上,我猜测Zend Framework库没有被加载。事实上,它不是,就在今天,我将它设置在一个姐妹文件夹中的公共文件夹,并调用测试脚本以确保。

但是,我在脚本中设置的代码无法正常运行,它类似于:

if(isset($_POST['nombreUs'])) {
$nombreUsuario = reemplaza_blancos($_POST['nombreUs']);
$nombreUsuario = trim($nombreUsuario);
$nombreUsuario = mysql_real_escape_string($nombreUsuario);
$validaDos = new Zend_Validate_Regex('/^([[:alpha:]]|[ÁÉÍÓÚÑñáéíóúÄËÏÖÜäëïöü])[[:alpha:]]|[ÁÉÍÓÚÑñáéíóúÄËÏÖÜäëïöü]+\s?([[:alpha:]][ÁÉÍÓÚÑñáéíóúÄËÏÖÜäëïöü])?/');
if(!$validaDos->isValid($nombreUsuario)) {
$errors ['nombre'] = "El nombre no puede contener n&uacute;meros";  
}
}

然后我检查if(empty($errors))然后调用并运行PHPMailer类。

让我明白看到这个脚本无法正常运行

1 个答案:

答案 0 :(得分:0)

你不能拥有

$libload = New Zend_Loader_Autoloader();

只是因为构造函数被声明为受保护的方法。

protected function __construct()

所以不,你不能。