没有默认值的可选参数-PHP

没有默认值的可选参数-PHP,php,function,Php,Function,对于我遇到的方法或函数,我面临一些困惑,这些方法或函数接受一些可选参数。在检查函数声明时,我没有看到任何默认值 例如,我正在使用一个PDO对象 $dbh = new PDO( $dsn,$username,$password,$option ); 摘自PDO课程 class PDO { /** * (PHP 5 &gt;= 5.1.0, PECL pdo &gt;= 0.1.0)<br/> * Creates a PDO instance representi

对于我遇到的方法或函数,我面临一些困惑,这些方法或函数接受一些可选参数。在检查函数声明时,我没有看到任何默认值

例如,我正在使用一个PDO对象

$dbh = new PDO( $dsn,$username,$password,$option );
摘自PDO课程

class PDO {

/**
 * (PHP 5 &gt;= 5.1.0, PECL pdo &gt;= 0.1.0)<br/>
 * Creates a PDO instance representing a connection to a database
 * @link http://php.net/manual/en/pdo.construct.php
 *
 * @param $dsn
 * @param $username [optional]
 * @param $passwd [optional]
 * @param $options [optional]
 */
public function __construct( $dsn, $username, $passwd, $options ) {
}

}
类PDO{
/**
*(PHP5=5.1.0,PECL pdo=0.1.0)
*创建表示到数据库的连接的PDO实例 *@linkhttp://php.net/manual/en/pdo.construct.php * *@param$dsn *@param$username[可选] *@param$passwd[可选] *@param$options[可选] */ 公共函数构造($dsn、$username、$passwd、$options){ } }
从表面上看,我看不出参数是如何被设置为可选的(除了构造函数方法的注释)。我的理解是,如果需要,必须始终提供参数,否则必须设置默认值。我仍处于学习编程的早期阶段,如果有人能解释这背后的原因或我遗漏了什么,我将不胜感激


非常感谢您的时间和帮助。

您从PDO类中摘录的内容来自何处?我使用的是phpstorm IDE,它允许您“转到”函数的声明,而该声明又将我带到了一个称为“不可变嵌入存根”的东西。我注意到“存根”似乎只有声明作为占位符。啊,我想可能是这样的。问题是,PDO是PHP中的一个内置类,实际上是用C实现的,而不是PHP。IDE生成的存根不是构造函数的实际代码。就PHP而言,您的理解是正确的。参数可选的唯一方法是提供一个默认值。@Don’t哦,我明白了,非常有趣。非常感谢您的澄清。(诚然,我希望有一些奇特的替代方法来实现可选参数,但我并不知道)。不客气。我不知道定义可选命名参数的另一种方法,但您可以传递比函数签名中定义的参数更多的参数,并使用
func\u get\u args
获取它们,还可以使用变长参数列表。这些东西并不适用于本例,仅供参考。