自動ロード機能を備えたプロジェクトでcomposerの使用を開始するにはどうすればよいですか?

マルコ・アウレリオ・デリュー

名前空間なしで、当時のチームによって作成された「プライベートフレームワーク」を使用して開発されたプロジェクトがあります。このフレームワークは、フレームワーク内からファイルをインクルードし、プロジェクト内のファイルを自動的に検索する自動ロード機能に依存しています。つまり、プロジェクト内には0のインクルード/必須があります。すべてのファイルは特定のルールに従い、私の関数に含まれます。

サードパーティのライブラリを使用するたびに、ファイルをダウンロードして特定の場所に配置し、ファイルプロパティの読み込みに取り組みます。

今週、使いたい新しいライブラリを見つけたので、composer経由でインストールすることにしました。現在、自動ロード機能は存在せず、フレームワークは不足しているファイルの実行を開始時に停止します。

自動ロードをそのままにして(プロジェクトとフレームワークからの名前空間のないファイルを含む)、composerを使用するにはどうすればよいですか?それは可能ですか、それとも私は死んでいますか?


編集:質問にいくつかのファイルを追加します。

frameworkBootstrap-このファイルはフレームワークをロードします(問題なく動作します)。

<?php

$dir = dirname(__FILE__);
// Database Package
require $dir . '/nav/database/NavDao.php';
require $dir . '/nav/database/NavDatabase.php';
require $dir . '/nav/database/NavTable.php';

// General
require $dir . '/nav/general/NavLanguage.php';
require $dir . '/nav/general/NavProject.php';
require $dir . '/nav/general/NavController.php';

// Tool
require $dir . '/nav/tool/NavValidator.php';
require $dir . '/nav/tool/NavLogger.php';
require $dir . '/nav/tool/NavListener.php';
require $dir . '/nav/tool/NavFile.php';
require $dir . '/nav/tool/NavEmail.php';
require $dir . '/nav/tool/NavException.php';

// View
require $dir . '/nav/view/NavPage.php';
require $dir . '/nav/view/NavTemplate.php';
require $dir . '/nav/view/NavView.php';

// Request
require $dir . '/nav/request/NavRequest.php';
require $dir . '/nav/request/NavAccess.php';
require $dir . '/nav/request/NavResponse.php';
require $dir . '/nav/request/NavSession.php';

// Plugin
NavProject::plugin(
        array(
            'NavMail' => $dir . '/nav/plugin/email/NavMail.php',
            'NavXPertMailer2006' => $dir . '/nav/plugin/email/NavXPertMailer2006.php',
            'NavLog' => $dir . '/nav/plugin/log/NavLog.php',
            'NavImage' => $dir . '/nav/plugin/file/NavImage.php',
            'NavMysql' => $dir . '/nav/plugin/dbms/NavMysql.php',
            'NavOracle' => $dir . '/nav/plugin/dbms/NavOracle.php',
            'NavTranslate' => $dir . '/nav/plugin/translate/NavTranslate.php'
));

require $dir . '/vendor/autoload.php';
?>

自動ロード機能-この機能は置き換えられています。

function __autoload($className) {
    $file = '';

    // Auto Load Template
    if (strpos($className, 'Template') !== false)
        $file = NavProject::path() . 'class/view/template/' . $className . '.php';

    // Auto Load Project Tools
    else if (strpos(strtolower($className), strtolower(NavProject::name())) !== false)
        $file = NavProject::path() . 'class/tool/' . $className . '.php';

    // Auto Load Controllers
    else if (strpos($className, 'Controller') !== false)
        $file = NavProject::path() . 'class/control/' . $className . '.php';

    // Auto Load Nav Plugin
    else if (strpos($className, 'Nav') === 0) {
        $list = NavProject::plugin();
        foreach ($list as $plugin => $location)
            if ($plugin == $className)
                $file = $location;

        // Auto Load Model
    } else {
        $file = NavProject::path() . 'class/model/' . $className . '.php';
    }

    if (is_file($file))
        require $file;
}

サードパーティライブラリ

https://github.com/alexshelkov/SimpleAcl

VeeeneX

__autoloadをspl_autoload_register();に置き換えてみてください。

どうして?

__autoload(); は推奨されておらず、将来的には非推奨になるかドキュメントから削除される可能性があります

この関数はspl_autoload_register()、composerが使用する関数と衝突する可能性があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Linux上の.NETコアを備えたRoslyn:外部プロジェクトをロードするにはどうすればよいですか?

プロジェクトで使用されているPHP拡張機能を自動的に判別するにはどうすればよいですか?

キャンセル機能を備えたダイアログボックスを使用できるように、VueJSおよびVueXプロジェクトをより適切に整理するにはどうすればよいですか?

既存のDjangoプロジェクトを開始するにはどうすればよいですか?

Selenium:自動的に開始されたダウンロードのリンクを取得するにはどうすればよいですか?

Composer-プロジェクトのルートを取得するにはどうすればよいですか?

Android StudioでDartプロジェクトを開始するにはどうすればよいですか?

NLPを使用したテキスト要約に関するプロジェクトを開始するにはどうすればよいですか?

Gradleを使用してEclipseで新しいバックエンドWebプロジェクトを開始するにはどうすればよいですか?

このページをリロードするときにタイマーを自動的に開始するにはどうすればよいですか?

setInterval()を使用して、このReactSpringプロジェクトのスライドを自動的に変更するにはどうすればよいですか?

IntelliJIDEAプロジェクトのGradle / Maven自動インポートを無効または有効にするにはどうすればよいですか?

Djangoプロジェクトを開始するにはどうすればよいですか?

プロジェクトでscalafmtを自動的に実行するにはどうすればよいですか?

最後に機能していたプロジェクトをTFSサーバーからダウンロードし、機能していないローカルを置き換えるにはどうすればよいですか?

PyCharmに保存した後に自動的に角度のあるビルドプロセスを開始するにはどうすればよいですか?

(プロジェクトの開始後に)SwiftUIをCore Dataで動作させるにはどうすればよいですか?

最新バージョンのAngularJSで新しいプロジェクトを開始するにはどうすればよいですか?

Atomでjavascriptプロジェクトを開始するにはどうすればよいですか?または他のIDE?

npmを使用して必要最小限のファイルでAngular2プロジェクトを開始するにはどうすればよいですか?

このnpmプロジェクトを機能させるにはどうすればよいですか?

HoloViews / Bokehのプロット間にウィジェット(セレクター)とインタラクティブ機能(タップストリーム)を備えたダッシュボードを作成するにはどうすればよいですか?

ドラッグアンドドロップ機能を備えたOutlookでエクスプローラーのような列を作成するにはどうすればよいですか?

プロジェクト外で開始されたreplに最新のClojureバージョンを使用するようにleiningenを構成するにはどうすればよいですか?

javascriptをドラッグしながら自動スクロールの「開始ゾーン」を変更するにはどうすればよいですか?

AndroidStudioの最後に開いたプロジェクトレコードを削除するにはどうすればよいですか

プロセスがWindows自動実行キーから開始されたかどうかを確認するにはどうすればよいですか?

Webプロジェクトの開始ページを変更するにはどうすればよいですか?

ページ上の特定のスクロール位置で機能を開始するにはどうすればよいですか?

TOP 一覧

  1. 1

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  2. 2

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  3. 3

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  6. 6

    画像変更コードを実行してもボタンの画像が変更されない

  7. 7

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  8. 8

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  9. 9

    Python / SciPyのピーク検出アルゴリズム

  10. 10

    Ansibleで複数行のシェルスクリプトを実行する方法

  11. 11

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  12. 12

    二次導関数を数値計算するときの大きな誤差

  13. 13

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  14. 14

    androidsoongビルドシステムによるネイティブコードカバレッジ

  15. 15

    Reactでclsxを使用する方法

  16. 16

    値間の一致を見つける最も簡単な方法は何ですか

  17. 17

    Using Angular's UI-router, how can we make sure the new version of the html partial views are used, rather than the cached version?

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    PyTesseractを使用した背景色のため、スクリーンショットからテキストを読み取ることができません

  20. 20

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

  21. 21

    How to access json value by key value in freemarker?

ホットタグ

アーカイブ