1

Yii を試してみたいが、メインのフレームワークとして使いたくない。つまり、Yii の機能の一部を使用しながら、独自のフレームワークを使用したいということです。アプリケーションから Yii のクラスをインスタンス化できるようにするには、アプリケーションから Yii のオートローダを登録するだけでよいと考えました。おそらく次のような方法です。

spl_autoload_register
(
    function ($classname)
    {
        YiiBase::autoload($className);
    }
);

もちろん、YiiBase クラスを要求またはインクルードする必要があるので、前の関数を呼び出す前に、次のようにします。

$yiiBase = $_SERVER['DOCUMENT_ROOT'].'/yii/framework/YiiBase.php';
require_once($yiiBase);

しかし、「クラス YiiBase を再宣言できません」というエラーが表示されます。私は何が欠けていますか?

4

3 に答える 3

3

1) YiiBase.php を直接インクルードしないでください。yii.php をインクルードしてください。yii.php には、Yiiフレームワーク コード全体で (YiiBase メソッドでさえも) 使用されるクラスが含まれているためです。

 $yii = $_SERVER['DOCUMENT_ROOT'].'/yii/framework/yii.php';
 require_once($yii);

(そして YiiBase.php はデフォルトで yii.php に含まれています)

2)autoload handlerこの方法であなたを登録します。(Yii にはカスタム autoload ハンドラを追加する機能が組み込まれています)。

$my_autoload =  function($class) { ... };
// OR
// $my_autoload = array('MyClass', 'my_autoload')

YiiBase::registerAutoloader($my_autoload, true);

2 番目のパラメーターtrueは、whether to append/prepend the new autoloader after/before the default Yii autoloader

YiiBase.php が含まれている場合、Yii のデフォルトのオートローダーも含まれます。YiiBase::autoload()コードで明示的に呼び出す必要はありません。参照: YiiBase.php ファイルの最後の行を確認してください

于 2012-10-04T07:35:43.610 に答える
0

Yiiをwordpressと統合する人々のいくつかのアプローチを見ることができます。コントローラー/ルーティングが必要でない限り、アプリケーションを実行する必要はないかもしれません。これは、フレームワークのどの部分を使用するかによっても異なります。 。

于 2012-10-03T23:52:00.547 に答える
0

Yii2 でこれを行うには、この記事では、ページ中央の「サードパーティ システムでの Yii の使用」という見出しの下で説明します。

外部アプリケーションの起動時に含める関連部分は次のとおりです。

  require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
  $yiiConfig = require(__DIR__ . '/../config/yii/web.php');
  new yii\web\Application($yiiConfig); // Do NOT call run() here

明らかに、__DIR__ . '/../ディレクトリ レイアウトに合わせて調整する必要がある場合があります。

于 2019-06-23T03:48:56.687 に答える