私はコントローラから呼びたい新しいPHPクラスを持っています。 CakePHPのフォルダ構造のどこにこの新しいクラスを置くべきですか、それをコントローラから呼び出すか、またはそれを利用するための手順は何ですか?事前に協力いただきありがとうございます!CakePHP 3にカスタムPHPクラスを配置する場所は?
答えて
私の視点から、あなたはユーティリティクラスとして任意の独自のクラスとも第三者のクラスを再利用することができます。その場合は、クラスをsrc/Utility
フォルダに配置することができます。適切な名前空間を使用してください。その後、そのクラスをCakPHP 3.xのどこでも使用できます。
は、配置する方法:
発言権を、ファイル名Jorge.php
を使用してsrc/Utility
フォルダに保存し、Jorge
という名前のクラスを持っています。 Jorge.php
ファイルのnamespace App\Utility;
文の冒頭に置きます。
使い方:あなたはこのクラスを使用したいファイルで
、ちょうどuse App\Utility\Jorge;
を置きます。その後、クラスをそのファイルに呼び出すことができます。
ALTERNATIVEソリューション:
あなたは多くのクラスのサードパーティ製のパッケージを持っている場合は、あなたがhttps://stackoverflow.com/a/28527683/1787600
作成するほとんどのCakePHP派生コードは、ドキュメントで概説されている構造に該当します。 「完全に任意のユーティリティクラス」については
http://book.cakephp.org/3.0/en/intro/cakephp-folder-structure.html
私はあなたの意味を推測しているように、CakePHPは、「サードパーティの依存関係」(概念的には)として、それらを扱い、彼らは、「ベンダー」フォルダに置くことをお勧めします。新しいコンテンツがあなた自身のユーティリティプロジェクトである場合、そのフォルダ内のものを編集しないようにすることは推奨できません。
読み込みには、古い関数を使用してください。require
ファミリーの関数。
http://book.cakephp.org/3.0/en/core-libraries/app.html
アプリケーションで作曲を使用していないために起こる場合は、手動ですべてのベンダーが自分でライブラリをロードする必要があります。
require
に必要なパスを構築するために、CakePHPグローバル定数/関数を利用することができます。
http://book.cakephp.org/3.0/en/core-libraries/global-constants-and-functions.html
APP
、APP_DIR
、WWW_ROOT
など
"*読み込みには、古い古いphpの関数ファミリーが必要です。*" - CakePHPは名前空間とPSRオートローダーを使用しています。古代のコードを使用する場合を除いて、もう必要を使用する必要はほとんどありません。名前空間とパスが一致していることを確認するだけで、クラスが使用されると自動的にそのクラスを見つけることができます。 – burzum
確かに、光沢のある現代的なファイルを作成すると仮定すると、彼はオートロードを使うことができます。しかし、彼が近代化されたユーティリティの完全なスタックを使用していない場合は、古い学校のサードパーティの図書館を引っ張るときのように、古い学校の「インクルード」を使う方が簡単かもしれません。もし彼がクラスの代わりに関数を書くのを確実にしているのであれば? OPの質問はクラスに焦点が当てられていましたが、より一般的なケースは、「私はファイルから、多分いくつかのデータ/画像/サウンド/ビデオをロードしたいと思うでしょう。 PSR autoload "と表示されます。 – starlocke
に従うことができますあなたはどこでもあなたが/のsrc /フォルダにしたい、それを置くことができます。カスタムクラスは、Interface、DTO、Utility、Customなどのフォルダで収集できます。 cakePHP 3.xはPSR-4オートローダーを使用するので、クラスは一度使用されるとインスタンス化されます。正しい名前空間を追加することを忘れないでください。 たとえば、カスタムインターフェイスaddファイルsrc/Custom/Ownedを使用する場合。PHP
<?php
namespace App\Custom;
interface Owned
{
/**
* Find username owning object by object primary id
* @param $id
* @return string|int
*/
public function owner($id) : string;
}
...
は、その後すぐにそれを使用することができます:あなたはあなたのクラスを再利用しようとしている場合
...
class UsersTable extends Table implements Owned
{
...
をより良い解決策は、それが保存されますので、作曲することにより、独自のpackagistパッケージを作成し、それを含めることであろう"/ vendor"
- 1. CakePHP 3 - カスタムSQLコードを置く場所
- 2. CakePHPプロジェクトにカスタムクラスとサードパーティクラスを配置する場所は?
- 3. CakePHP:この関数を配置する場所
- 4. `import`モジュールをクラス内に配置する場所は?
- 5. 要素をAndroidのカスタム場所に配置する
- 6. Rails 3:カスタムバリデータークラスを配置する場所はどこですか?
- 7. PHPをヘッダの場所に配置する方法は?
- 8. グローバル定数をRails 3に配置する場所
- 9. ドメインオブジェクトを3層に配置する場所#winformsアプリケーション
- 10. Laravel Structure - カスタムAPIメソッドを配置する場所
- 11. System.Windows.Formの派生クラスにリソースを配置する場所
- 12. MVCアプリケーションに追加のクラスを配置する場所
- 13. クラス図にメソッドを配置する場所
- 14. CakePHP: 'Services'ロジックを置く場所
- 15. PHP、特定の場所にエラーを配置する方法
- 16. MySQLストアドプロシージャを配置する場所は?
- 17. Vistaにグローバルアプリケーションデータを配置する場所
- 18. サブページコンポーネントをIonic2に配置する場所
- 19. オニオンアーキテクチャにConnectionStringを配置する場所
- 20. クリーンアーキテクチャーのDependency Injectionクラスを配置する場所
- 21. Yiiアプリケーション外部APIクラスを配置する場所
- 22. Grailsプロジェクトにカスタム例外クラスを格納する場所は?
- 23. マルチスレッド。 MyLock.acquire()、ロックを配置する場所
- 24. ベストプラクティス:mysqlフィールドを配置する場所
- 25. WPF MahApps.Metro - ResourceDictionariesを配置する場所
- 26. laravelロガークラスを配置する場所
- 27. Database.SetInitializerを配置する場所
- 28. WPF Prism - リソースを配置する場所
- 29. サービス層を配置する場所
- 30. テンプレートボタンのクリックイベントを配置する場所
コントローラーから使用したい場合、なぜコンポーネントを作成できませんか? – ADmad
あなたのCakePHPアプリケーションやサードパーティのリソースのためにあなた自身で書いたものですか? – drmonkeyninja
@drmonkeyninjaはサードパーティのクラスです。違いはありますか? – Jorge