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

时间:2015-02-14 17:31:57

标签: php cakephp cakephp-3.0

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

更具体地说:

  • 有哪些命名惯例?我是否需要使用特定的命名空间?

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

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

1 个答案:

答案 0 :(得分: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

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

    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. 在MyClass.php
    4. 的顶部添加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;
         }