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ía Zend Framework cargada"; else echo "Error al cargar la librerí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úmeros";
}
}
次に、PHPMailer クラスを確認if(empty($errors))
して呼び出して実行します。
このスクリプトが単に正しく実行されないのを見ると、気が遠くなります