PHPでクラスを自動読み込みしようとしています。ただし、__autoload()
関数は実行されていないようです。変数$class_name
を入力してもecho
を試しても、私が下に示した出力以外は表示されません。私はすべての関連するファイルを含めて、それの無関係な部分を取り除いた。 PHP: Autoloading Classes - Manualの注記によると、使用していないCLI interactive modeには__autoload()
を使用できません。任意のポインタは非常に高く評価されます。ありがとう。 index.phpのの__autoloadがPHPで実行されていません
出力:
致命的なエラー:クラス 'カレンダー' の行に/home1/tylercro/public_html/cb-test/index.php
には見られませんのindex.php:
<?php
require_once($_SERVER['INCLUDES'] . 'prep.php');
$smarty -> assign('calendar', new Calendar());
?>
prep.php:
<?php
error_reporting(-1);
function __autoload($class_name) {
include($_SERVER['CLASSES'] . $class_name . '.php');
}
require_once($_SERVER['SMARTY_BIN'] . 'Smarty.class.php');
$smarty = new Smarty();
?>
の
.htaccessファイル:
Options -Indexes
SetEnv CLASSES /home1/tylercro/public_html/cb-test/includes/classes/
SetEnv INCLUDES /home1/tylercro/public_html/cb-test/includes/
SetEnv SMARTY_BIN /home1/tylercro/smarty/
常に '.htaccess'を使用せずにアプリケーションを構築しよう - それは意志あなたがnginxのに移動するのに役立ちます。 –
このサイトが積極的に開発されているので、ファイルがたくさん移動します。潜在的に必要とされるメンテナンスの可能性がほとんどない(あるいは何らかの理由で)同じ動作をどのように実装することができるかについての代替の推奨事項はありますか? –
確かに、どこかで宣言された "魔法の" $ _SERVER定数を使って自動ロードを行うべきではありません。名前空間とクラス名の使用については、この[標準](http://groups.google.com/group/php-standards/web/psr-0-final-proposal?pli=1)を参照してください。オートローディング。 –