2016-07-05 4 views
1

私は最初の大きなプロジェクトをPHPで作成したいと思います。私はPhalcon PHPを使用し、Phalcon Developer Toolsを使用してプロジェクト構造を作成しました。それは のようなものです。PhalconPHP - グローバル関数とクラス

├── app 
│   ├── cache 
│   ├── config 
│   │   ├── config.php 
│   │   ├── loader.php 
│   │   └── services.php 
│   ├── controllers 
│   ├── migrations 
│   ├── models 
│   └── views 
├── index.html 
└── public 
    ├── css 
    ├── files 
    ├── img 
    ├── index.php 
    ├── js 
    └── temp 

グローバルな機能とクラスが必要になると思います。私はダムの変数に例LaravelのDDの機能のために実装し、私は好きな場所

dd($value); 

のように、この機能を使用したいと思います。静的関数を使用するためにいくつかのグローバルクラスを作成したいと思っています。例:

User::isLogged() 

これは私のプロジェクトでどのように実装するのですか?ディレクトリ関数やlibを作成するか、app /?にindcudeしますか?それは大会ですか?グローバルクラスを個々のフォルダに配置しますか?どのようにグローバルファンクションとクラスを分離し、それらを標準のファルコンローダーに登録し、プロジェクト全体に対して一度だけ行うのですか?

+0

PhalconはMVCデザインパターンを使用しています*あなたの* "グローバルクラス" *は/ app/models(例: 'User.php')のモデルです。コントローラーは/ app/controllerにあり、その名前は(例えば 'SignupController.php')、ビューは/ app/view内のサブディレクトリーにあり、そのパス(例:/ app/view/signup)に名前が付けられます/exex.phtml for www.example.com/signup/)。チュートリアルを実行する価値があります。https://docs.phalconphp.com/en/latest/reference/tutorial.html – CD001

+0

@ CD001小さなプロジェクトでPhalconを使用しました。 app/modelsには、データベース内のテーブルを表すクラスがありました。今私は違うことについて話している。たぶんユーザーは間違った例でした。私はクラスや関数について考えています。 Multimedia :: uploadImage()またはCaptcha :: checkCaptcha。それはdbと関係のないクラスです。そして、例のdd関数はどうでしょうか? – Robin71

+1

モデルは必ずしもORMの外部のデータベーステーブルに関連する必要はありません。マルチメディアは依然としてモデルです。モデルを「もの」またはビジネスプロセスのモデリングと考えてください - これは参考になるものです:http://stackoverflow.com/questions/5863870/how-should-a-model-be-structured-in- mvc – CD001

答えて

3

Phalconの良い点は、現在の状況に最適な方法でプロジェクトを自由に整理できることです。

私がプロジェクトのほとんどで使用しているより一般的なアプローチは、オートローダーでもっとも使用されている名前空間を登録することです。私の場合、私はマルチモジュール構造を使用しており、これは与えられたモジュールのModule.phpファイルで行われます。

Moduleクラス:私の場合は

class Module 
{ 
    public function registerAutoloaders($di) 
    { 
     $config = $di->getConfig(); 
     $loader = new \Phalcon\Loader(); 
     $namespaces = [ 
      'Frontend\Controllers' => __DIR__ . '/controllers/', 
      'Frontend\Forms' => __DIR__ . '/forms/', 
      'Models' => $config->site->path->common . 'models/', 
      'Helpers' => $config->site->path->common . 'helpers/', 
     ]; 
     $loader->registerNamespaces($namespaces); 
     $loader->register(); 
    } 
} 

ヘルパーは、モデルではなく、特定の何かに役立つファイルです。たとえば、ファイルシステムを操作するための関数を保持するFilesヘルパーがあります。私はslugalization、latinizationなどの文字列操作を処理するためのヘルパーを持っています...

私はPHPMailer、BrowserDetect、ImageProcessingライブラリなどの私の公共図書館を置くLibフォルダもあります。

そして今、Laravelのdd()のようなグローバル関数について。私はブートストラップファイルまたはあなたのindex.phpにインクルードする小さなファイルを持っています。私はデバッグのための1以上のように、どこにでも簡単に使用したいという多くのグローバル関数が存在していない私の場合は

function d($what) 
{ 
    echo '<pre>'; 
    print_r($what); 
    die('</pre>'); 
} 

:それはのような1-2グローバル関数が含まれています。私が上記のHelperファイルに入れたものの残りの部分。

私は助けて、他の人の意見を聞いてうれしいです。

関連する問題