0

PSR-0 に準拠するために取り組んでいる新しいプロジェクトのコードをアップグレードしようとしています。

私は SPL ローダー クラスを使用していますが、何か間違っている可能性があります。問題が何であるかを特定できません。

次のエラーが発生し続けます。

Fatal error: Class 'widezike\General' not found in /nfs/c03/h04/mnt/169128/domains/widezike.com/html/beta/lib/functions.php on line 14

これは私のフォルダ構造です:

index.php
-lib
config.php
init.php
spl-class-loader.php
functions.php
    -widezike
        -General.php

これは、サーバー側のコードで何かを開始する私の関数ファイルです。

<?php

include 'init.php';
include 'config.php';

include 'spl-class-loader.php';

$loader = new SplClassLoader('General', 'lib/widezike');
$loader->register();

use widezike\General;

//Run the output buffer
General::ob();

これは今のところ私のコードですが、致命的なエラーの原因を見つけることができないようです...

前もって感謝します

4

2 に答える 2

1

ここで少し推測していますが、問題はコンストラクターにあると思います..

$loader = new SplClassLoader('General', 'lib/widezike');

リンク先のコードでは、それらは名前空間とインクルード パスです。

私が提案できるのは、うまくいくまでそれらをいじってみることだけです。

あなたは試すことができます:

$loader = new SplClassLoader(null, 'lib');

または

$load = new SplClassLoad('General', 'lib');

一方、私は個人的に非常に単純な spl_autoload_register 関数を使用して、クラスのロードを行っています..

spl_autoload_register(function($class){

    $filename = str_replace('\\', '/', $class) . '.php';
    require($filename);

});

$object = new phutureproof\common\whatever();

/phutureproof/common/whatever.php次に、内容を含むファイルを作成します。

<?php
namespace phutureproof\common;

class whatever
{

}
于 2013-06-05T12:02:55.757 に答える