1

Zend の Framework Autoloader を呼び出す別の方法はありますか。Zend_Loader_Autoloader をロードし、静的メソッド ::getInstance() を呼び出すこの Web ページがあります。スクリプトが機能しない理由を考えるのに苦労した後、次のようなテストを設定しました。

<?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 libreria」を出力します。

前のコードの最初の 2 行を追加したスクリプト 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 サーバーのスクリプトに大文字の問題があるかどうかを確認しますが、問題はないようです。

ちなみに、ライブラリを要求または含める前に出力される唯一のコードは、出力を表示するための html ドキュメントと、それを制御するための JavaScript である「header.php」だけです。

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";  
}
}

次に、PHPMailer クラスを確認if(empty($errors))して呼び出して実行します。

このスクリプトが単に正しく実行されないのを見ると、気が遠くなります

4

1 に答える 1

0

持つことはできません

$libload = New Zend_Loader_Autoloader();

コンストラクターが保護されたメソッドとして宣言されているためです。

protected function __construct()

いいえ、できません。

于 2012-10-24T10:16:13.300 に答える