Как я могу использовать свой собственный внешний класс в CakePHP 3.0?

Это мой первый вопрос о переполнении стека, но я нашел здесь сотни замечательных ответов!

Во всяком случае: я создаю приложение в CakePHP 3.0, в этом приложении я хочу нарисовать SVG-графики данных, используя класс php, который я написал. Каким будет подходящий способ использовать этот класс в моем проекте CakePHP 3?

Более конкретно:

* Какие соглашения об именах? Нужно ли использовать определенное пространство имен?

* Где я могу поместить файл, содержащий класс PHP?

* Как я могу включить его и использовать его в контроллере или в представлении?

С наилучшими пожеланиями

Solutions Collecting From Web of "Как я могу использовать свой собственный внешний класс в CakePHP 3.0?"

Каковы соглашения об именах? Нужно ли использовать определенное пространство имен?

Класс SVG должен иметь пространство имен. Для пространств имен вы можете увидеть http://php.net/manual/en/language.namespaces.rationale.php

Где я могу поместить файл, содержащий класс PHP?

  1. Создайте папку по автору (здесь может быть ваше имя, так как вы являетесь автором) в поставщике

  2. Затем создайте свой класс внутри этого соглашения – это поставщик / $ 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. Создание папки поставщика \ MyClass
  2. Вставка MyClass.php в эту папку
  3. добавление namespace MyClass; наверху MyClass.php

Например, 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; }