【发布时间】:2019-12-11 16:58:26
【问题描述】:
我有使用 cakephp 版本 3 的应用程序。 如何从自定义 php 文件中调用函数。
假设我有一个自定义的 php 文件 test.php。我想从控制器文件 UrlController.php 中调用 cakephp 函数。
test.php
<?php
error_reporting(E_ALL);
include 'path/to/UrlController.php';
echo json_decode(GetUrl());
UrlController.php
<?php
namespace App\Controller;
use App\Controller\URLController;
use Cake\Event\Event;
use Cake\I18n\Time;
use Cake\Network\Exception\NotFoundException;
use Cake\ORM\TableRegistry;
class LinksController extends URLController
{
public function GetUrl()
{
$link = $this->Links->newEntity();
$data = [];
$link = $this->Links->patchEntity($link, $data);
if ($this->Links->save($link)) {
$content = [
'status' => '200',
'message' => 'success',
'url' => 'https://google.com'
];
$this->response->body(json_encode($content));
return $this->response;
}
}
}
当尝试包含应用程序 index.php 和 bootstrap.php 时,它仍然无法正常工作。
已根据@Salines 回答编辑了 test.php,但仍无法正常工作
<?php
namespace App\test;
error_reporting(E_ALL);
use App\Controller\URLController;
class Test extends URLController
{
public function custom()
{
$this->getUrl(); // call function from UrlController
}
}
错误:“PHP 致命错误:在第 7 行的 /../public_html/test/test.php 中找不到类 'App\Controller\URLController'”
我的测试文件位于 /absolute/path/public_html/test/test.php,我应该在命名空间中放什么?
【问题讨论】:
-
require_once(ROOT . 'src' . DS . 'Controller' . DS . 'UrlController'); $LinksControllerObj = new LinksController(); -
一开始你为什么要这么做?你的问题有点像XY problem。
-
@ndm 这是我的实际问题,不是 XY 问题。
-
好吧,恕我直言,大多数人在面对可能的 XY 问题时都会这么说 :) 看,您想直接从非 CakePHP 应用程序 PHP 调用控制器脚本,而您无法这样做,那是 a 问题,您在这里提出的问题,但我怀疑这实际上是您的 解决方案 (一个不合适的)到一个潜在的问题(无论你的非 CakePHP 脚本是做什么/解决的),你应该详细说明。
-
为了让我自己清楚,尝试从 CakePHP 应用程序外部包含一个控制器是错误的做法(即使你让它工作),无论你试图通过做什么来解决那个。
标签: php function cakephp server-side-includes