【问题标题】:unexpected 'use' (T_USE) when trying to use composer尝试使用作曲家时意外的“使用”(T_USE)
【发布时间】:2016-01-25 09:21:17
【问题描述】:

所以,我正在尝试使用 coinbase API。我正在尝试一个简单的测试,看看我是否可以让它工作,但我遇到了各种作曲家错误。

目前,我对这段代码的“使用”感到意外:

            use Coinbase\Wallet\Client;
            use Coinbase\Wallet\Configuration;

            $apiKey = 'public';
            $apiSecret = 'private';
            $configuration = Configuration::apiKey($apiKey, $apiSecret);
            $client = Client::create($configuration);
            $spotPrice = $client->getSpotPrice();
            echo $spotPrice;

那么,我的使用语句是不是放错地方了?我已经在索引函数之外和课堂之外尝试过它们。两者都产生与此完全不同的结果集。

在 Keks 类之外,我得到了

致命错误:“Coinbase\Wallet\Configuration”类未在 /home/content/61/11420661/html/beta/application/controllers/keks.php 在第 15 行

在类内但在 index() 函数之外

致命错误:在第 4 行的 >/home/content/61/11420661/html/beta/application/controllers/keks.php 中找不到特征“Coinbase\Wallet\Client”

我的 composer.json 可能有问题吗?

完整的控制器在这里:http://pastebin.com/4BjPP6YR

【问题讨论】:

  • 你用的是哪个版本的php?如有疑问请尝试<?php echo phpversion();
  • 那么请运行<?php echo phpversion();获取版本。
  • 哦,顺便说一句:实际的错误消息是parse error: syntax error, unexpected 'use' (T_USE) 还是别的什么? (如果是:您发布的代码 sn-p 之前是什么?)
  • 确切的消息在这个结尾,代码正是我在过去的bin链接中显示的内容“解析错误:语法错误,/home/content 中的意外'使用'(T_USE) /61/11420661/html/beta/application/controllers/keks.php 第 9 行"

标签: php oop namespaces


【解决方案1】:

你不能在你正在使用它的地方使用“使用”。

“use”关键字要么在类定义前面,用于将其他类/接口/特征导入到它自己的命名空间中,要么在类内部(但不在方法内部)以向类添加特征。

<?php
namespace Foo;

use Different\Class; // use can go here

class Bar {
  use TraitCode; // use can go here

  public function baz() {
    $this->traitFunction('etc');
    // use CANNOT go here
  }
}

【讨论】:

  • 这是错误的。 use(在这种情况下)与类无关,根本不需要“在类前面”。
  • @deceze 看看问题中提供的 pastebin,你会承认这个答案在这种情况下是相当准确的。
  • 在我的情况下,将 use 语句放在页面顶部解决问题。
  • 或者,正如我们在 Joisey 中所说,“Youze 不能像 youze 那样使用‘use’。”
【解决方案2】:

当我尝试使用“use”关键字时,我正在使用 CodeIgniter,它会在方法中抛出错误。

我只是将它移到类声明之上。

<?php
  defined('BASEPATH') OR exit('No direct script access allowed');
  use Auth0\SDK\Auth0;
  
  class Home extends CI_Controller {

  }
?>

一切正常。

【讨论】:

    【解决方案3】:

    你也可以——

    public function index() {
        ...
        $configuration = Coinbase\Wallet\Configuration::apiKey($apiKey, $apiSecret);
        $client = Coinbase\Wallet\Client::create($configuration);
        ...
    }
    

    如果你希望在函数中使用类而不是全局声明它。

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      相关资源
      最近更新 更多