如何在CakePHP 3.0中使用自己的外部类?

Jon*_*ann 14 php cakephp cakephp-3.0

我正在CakePHP 3.0中创建一个应用程序,在这个应用程序中,我想使用我编写的php类绘制数据的SVG图.在CakePHP 3项目中使用这个类的正确方法是什么?

进一步来说:

  • 命名约定是什么?我需要使用特定的命名空间吗?

  • 我在哪里放置包含PHP类的文件?

  • 如何包含它并在控制器或视图中使用它?

Faz*_*mad 27

命名约定是什么?我需要使用特定的命名空间吗?

您的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.'供应商'.DS.'MyClass'.DS.'MyClass.php');

(用你的filename.php替换你的foldername和MyClass.php的MyClass)

b)使用它:

添加use MyClass\MyClass;你的控制器

例如,我想在控制器中添加MyClass.对我有用的步骤

  1. 创建vendor\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 />";
    }
}
Run Code Online (Sandbox Code Playgroud)
  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;
     }
    
    Run Code Online (Sandbox Code Playgroud)