Php 在curl_init/curl_setopt中使用常量字符串

Php 在curl_init/curl_setopt中使用常量字符串,php,curl,Php,Curl,这可能很琐碎,但我快疯了。 为什么以下方法有效: class myClass { public function __construct() { $ch = curl_init("http://myserver.com/myscript.php"); $fields = array('myKey' => 'myValue'); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_POSTFI

这可能很琐碎,但我快疯了。 为什么以下方法有效:

class myClass {
  public function __construct() {
    $ch = curl_init("http://myserver.com/myscript.php");
    $fields = array('myKey' => 'myValue');
    curl_setopt($ch,CURLOPT_POST, 1);
    curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($fields));
    $result = curl_exec($ch);
    curl_close($ch);
    echo curl_error($ch);
    echo $result
  }
}
$instance = new myClass();
……或者

class myClass {
  private $uri = "http://myserver.com/myscript.php"; // <<---
  public function __construct() {
    $ch = curl_init($uri); // <<--
    $fields = array('myKey' => 'myValue');
    curl_setopt($ch,CURLOPT_POST, 1);
    curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($fields));
    $result = curl_exec($ch);
    curl_close($ch);
    echo curl_error($ch);
    echo $result
  }
}
$instance = new myClass();
看起来const字符串没有在函数curl_init中展开。如果改用curl_setopt,也会发生同样的情况。 我在谷歌上搜索过,但是,唉,没有结果。 有什么想法吗


编辑:我为我的打字错误道歉。我已经编写了考虑常数问题的代码。这就是为什么我没有注意到“公共功能”。那不是我的问题。我已经更正了代码。不,据我所知,没有一个PHP版本可以在构造之前省略“public function”。

Hm,如果你简单地将常量转储到你的方法中,你会得到什么?对于我们中较不高级的人来说:哪个版本的php可以在方法声明中省略
\uu construct()
URI
引用全局常量,不是
myClass::URI
1。@mario确实,很好地发现了。实际上,这会在错误日志文件中引发警告。。。任何像样的IDE都应该指出这一点。$this->uri或self::uri
class myClass {
  const URI = "http://myserver.com/myscript.php"; // <<---
  public function __construct() {
    $ch = curl_init(URI); // <<--
    $fields = array('myKey' => 'myValue');
    curl_setopt($ch,CURLOPT_POST, 1);
    curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($fields));
    $result = curl_exec($ch);
    curl_close($ch);
    echo curl_error($ch);
    echo $result
  }
}
$instance = new myClass();
"Could not resolve remote host URI"