[解決済み] PHP の名前空間を autoload で使用するにはどうしたらよいですか?
2022-12-02 08:56:12
質問
autoloadとnamespacesを使おうとすると、こんなエラーが出ます。
致命的なエラーです。 クラス 'Class1' が /usr/local/www/apache22/data/public/php5.3/test.php に見つかりませんでした。 において 10行目
何が間違っているのか、どなたか教えていただけませんか?
以下は私のコードです。
Class1.php。
<?php
namespace Person\Barnes\David
{
class Class1
{
public function __construct()
{
echo __CLASS__;
}
}
}
?>
test.phpになります。
<?php
function __autoload($class)
{
require $class . '.php';
}
use Person\Barnes\David;
$class = new Class1();
?>
どのように解決するのですか?
Class1
がグローバルスコープにない。
これは古い回答で、あなたが
spl_autoload_register()
のサポートを仮定することができなかった時代(もう何年も前のことです!)から変わっていることに注意してください。
最近では、おそらくComposerを使用していることでしょう。ボンネットの中では、次のスニペットのようなものが有効になっているはずです。 クラスのオートローディング .
spl_autoload_register(function ($class) {
// Adapt this depending on your directory structure
$parts = explode('\\', $class);
include end($parts) . '.php';
});
完全を期すために、古い答えを示します。
グローバルスコープで定義されていないクラスをロードするには、オートローダを使用する必要があります。
<?php
// Note that `__autoload()` is removed as of PHP 8 in favour of
// `spl_autoload_register()`, see above
function __autoload($class)
{
// Adapt this depending on your directory structure
$parts = explode('\\', $class);
require end($parts) . '.php';
}
use Person\Barnes\David as MyPerson;
$class = new MyPerson\Class1();
またはエイリアスなし
use Person\Barnes\David\Class1;
$class = new Class1();
関連
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] PHPでパスワードをハッシュ化するためにbcryptを使用するにはどうすればよいですか?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】SQLSTATE[42000]: 構文エラーまたはアクセス違反が発生しました。1064 SQL 構文にエラーがあります - PHP - PDO [重複]。
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み】警告: file_get_contents(): https:// ラッパーがサーバー構成ですべて無効になっています。
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。
-
[解決済み] libapache2-mod-php7 パッケージの場所がわからない
-
[解決済み] PHPのキーワード "use "はどのように機能しますか?また、このキーワードでクラスをインポートできますか?