【发布时间】:2018-06-15 22:11:57
【问题描述】:
我正在尝试使用 Podios PHP 客户端库在 Podio 应用程序中创建一个新项目。
我使用他们示例页面中的代码,但目前我尝试:
// Create a field collection with some fields.
// Be sure to use the external_ids of your specific fields
$fields = new PodioItemFieldCollection(array(
new PodioTextItemField(array("external_id" => "my-text-field", "values" => "FooBar")),
new PodioProgressItemField(array("external_id" => "my-number-field", "values" => 75))
));
// Create the item object with fields
// Be sure to add an app or podio-php won't know where to create the item
$item = new PodioItem(array(
'app' => new PodioApp(123), // Attach to app with app_id=123
'fields' => $fields
));
// Save the new item
$item->save();
我收到以下错误:
PHP 致命错误:无法声明类 PodioItemField,因为 名称已在使用中 /var/www/html/podioproject/vendor/podio/podio-php/models/PodioItemField.php 在第 0 行
我不太明白错误的含义,所以我很难弄清楚加载错误的内容以及原因。
在 stackoverflow 上还有其他问题,人们回答将 include 更改为 include_once。我正在使用作曲家的自动加载器,所以该解决方案不适用
composer.json:
{
"require": {
"podio/podio-php": "^4.3",
"slim/slim": "^3.10"
}
}
【问题讨论】:
-
@RonvanderHeijden 但我只使用 composer autoloader,其余的都在他们的客户端库中处理 - 那么客户端库中的错误呢?
-
PodioItemField 类在哪里定义?,该类不在你的问题代码中
-
/vendor/podio/podio-php/models/PodioItemField.php。代码在github.com/podio/podio-php/blob/master/models/…
-
肯定是namespace的问题,你检查过没有use语句直接使用namespace吗?
-
我认为这个问题来自这样一个事实,文件
models/PodioItemField.php包含许多类:class PodioItemField extends PodioObject {,class PodioTextItemField extends PodioItemField { '...当composer需要一个类时,它总是加载这个类一次又一次地归档。此文件中的每个类都会发生这种情况。而PodioItemField类之前已经找到了。解决方案:将所有这些类从文件models/PodioItemField.php提取到它们自己的文件中,例如models/PodioTextItemField.php.... .
标签: php oop composer-php autoload podio