1

是否有另一种调用 Zend 框架自动加载器的方法。我有这个网页,我在其中加载 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";

输出“Error al cargar la librería”。

我还实现了脚本 installlationchecker.php,在其中添加了之前代码的前两行,并且在 public 文件夹的姊妹文件夹中安装了 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 对不起,我已经检查过了,正如马特所说,它正在输出库设置。然而,我一直试图让这段代码工作好几天,因为它在远程服务器上失败,而不是在我的测试服务器上,我猜想 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 类。

看到这个脚本根本无法正常运行,我感到很麻木

4

1 回答 1

0

你不能拥有

$libload = New Zend_Loader_Autoloader();

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

protected function __construct()

所以不,你不能。

于 2012-10-24T10:16:13.300 回答