web-dev-qa-db-ja.com

CakePHP 3.0で自分の外部クラスを使用するにはどうすればよいですか?

CakePHP 3.0でアプリケーションを作成しています。このアプリケーションでは、作成したphpクラスを使用してデータのSVGグラフを描画します。 CakePHP 3プロジェクトでこのクラスを使用するための適切な方法は何ですか?

すなわち:

  • 命名規則は何ですか?特定の名前空間を使用する必要がありますか?

  • PHPクラスを含むファイルはどこに置きますか?

  • どうすればそれを含めてコントローラーまたはビューで使用できますか?

15
Jon Lachmann

命名規則は何ですか?特定の名前空間を使用する必要がありますか?

SVGグラフクラスには名前空間が必要です。名前空間については、 http://php.net/manual/en/language.namespaces.rationale.php を参照してください。

PHPクラスを含むファイルはどこに置きますか?

  1. ベンダーで作成者(作成者であるため、ここにあなたの名前があります)ごとにフォルダーを作成します

  2. 次に、その中にクラスを作成します。規則は、vendor/$ author/$ packageです。あなたはもっと読むことができます http://book.cakephp.org/3.0/en/core-libraries/app.html#loading-vendor-files

コントローラーまたはビューに含めて使用するにはどうすればよいですか?

a)含める:

require_once(ROOT.DS。'Vendor '。DS。' MyClass '。DS。' MyClass.php ');

(MyClassをフォルダー名に置き換え、MyClass.phpをfilename.phpに置き換えます)

b)それを使用するには

コントローラにuse MyClass\MyClass;を追加します

コントローラーにMyClassを追加したい。私のために働いたステップ

  1. Vendor\MyClassフォルダーを作成しています
  2. そのフォルダーにMyClass.phpを貼り付ける
  3. myClass.phpの先頭にnamespace MyClass;を追加

MyClass.phpには、たとえば次のコードがあります。

namespace MyClass;


class MyClass
{
    public $prop1 = "I'm a class property!";

    public function setProperty($newval)
    {
        $this->prop1 = $newval;
    }

    public function getProperty()
    {
        return $this->prop1 . "<br />";
    }
}
  1. コントローラの上部にuse MyClass\MyClass;を追加する

  2. 次に、それをコントローラーアクションに含めます。私のアクションサンプル

       public function test()
     {
         require_once(ROOT .DS. "Vendor" . DS  . "MyClass" . DS . "MyClass.php");
    
         $obj = new MyClass;
         $obj2 = new MyClass;
    
         echo $obj->getProperty();
         echo $obj2->getProperty();
         exit;
     }
    
27
Fazal Mohammad