ホームページ >バックエンド開発 >PHPチュートリアル >関数パラメータ NULL に関連する問題

関数パラメータ NULL に関連する問題

WBOY
WBOYオリジナル
2016-06-13 11:59:031260ブラウズ

NULL 関数のパラメータの問題
以前 C# を勉強したのですが、コンストラクターの $dbo=NULL が理解できませんでした。アドバイスをお願いします。
=NULL を使用せずに $dbo を直接使用することはできますか? 私の個人的な理解では、ステートメント $dbo=NULL は $dbo がオブジェクト型ではないことを意味します。では、なぜ以下で判断する必要があるのでしょうか? $dbo=NULL は関数に NULL 値を取り込まないのでしょうか?
保護された関数 __construct($dbo)
{
//...
}

<br /><br />	class DB_Connect{<br />		<br />		protected $db;<br />		<br />		protected function __construct($dbo=NULL)<br />		{<br />			if(is_object($dbo))<br />			{<br />				$this->db=$dbo;				<br />			}<br />			else<br />			{<br />				$dsn="mysql:host=".DB_HOST."; dbname=".DB_NAME;<br />				try <br />				{<br />					$this->db=new PDO($dsn,DB_USER,DB_PASS);<br />				}<br />				catch(Exception $e)<br />				{<br />					die($e->getMessage());<br />				}<br />			}<br />		}		<br />	<br />	}	<br />

------解決策---- - ---------------
function __construct($dbo=NULL)
は、$dbo パラメータの初期値が NULL であるためオプションであることを意味します

function __construct($dbo)
のみの場合は、パラメータ $dbo を渡す必要があります

これはデフォルトのパラメータであるため、
new DB_Connect() ;
new DB_Connect($db);
は問題ありません


C# はオーバーロードをサポートしているため、この場合は次のように記述できます
DB_Connect::__construct( $dbo) {}
DB_Connect::__construct() {}
-----解決策---------
しかしオブジェクト指向プログラミングにおいて、オーバーロードは非常に重要な概念 (メソッド)

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。