如何在 CakePHP 3.0 中使用我自己的外部 class?
How can I use my own external class in CakePHP 3.0?
我正在 CakePHP 3.0 中创建一个应用程序,在这个应用程序中,我想使用我编写的 php class 绘制数据的 SVG 图形。在我的 CakePHP 3 项目中使用这个 class 的正确方法是什么?
更具体地说:
命名约定是什么?我需要使用特定的命名空间吗?
我应该把包含 PHP class 的文件放在哪里?
如何在控制器或视图中包含和使用它?
命名约定是什么?我需要使用特定的命名空间吗?
您的 SVG 图 class 应该有一个命名空间。对于命名空间,您可以查看 http://php.net/manual/en/language.namespaces.rationale.php
我应该把包含 PHP class 的文件放在哪里?
在 vendor
中按作者创建一个文件夹(这里可能是你的名字,因为你是作者)
然后在里面创建你的class
惯例是 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;
For example I want to add MyClass in a controller. Steps that worked for me
- 正在创建 vendor\MyClass 文件夹
- 正在该文件夹中粘贴 MyClass.php
- 在 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 />";
}
}
在控制器顶部添加use MyClass\MyClass;
然后将其包含在我的控制器操作中。我的动作样本
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;
}
我正在 CakePHP 3.0 中创建一个应用程序,在这个应用程序中,我想使用我编写的 php class 绘制数据的 SVG 图形。在我的 CakePHP 3 项目中使用这个 class 的正确方法是什么?
更具体地说:
命名约定是什么?我需要使用特定的命名空间吗?
我应该把包含 PHP class 的文件放在哪里?
如何在控制器或视图中包含和使用它?
命名约定是什么?我需要使用特定的命名空间吗?
您的 SVG 图 class 应该有一个命名空间。对于命名空间,您可以查看 http://php.net/manual/en/language.namespaces.rationale.php
我应该把包含 PHP class 的文件放在哪里?
在 vendor
中按作者创建一个文件夹(这里可能是你的名字,因为你是作者)
然后在里面创建你的class 惯例是 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;
For example I want to add MyClass in a controller. Steps that worked for me
- 正在创建 vendor\MyClass 文件夹
- 正在该文件夹中粘贴 MyClass.php
- 在 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 />";
}
}
在控制器顶部添加
use MyClass\MyClass;
然后将其包含在我的控制器操作中。我的动作样本
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; }