私は、mysqli拡張を含むPHPスクリプトの例を探しています。問題のコードは次のとおりです。phpで関数をインスタンス化することは可能ですか?
$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
これは関数またはクラスインスタンスであると混乱します。それが関数であれば、関数をインスタンス化することは可能ですか?
私は、mysqli拡張を含むPHPスクリプトの例を探しています。問題のコードは次のとおりです。phpで関数をインスタンス化することは可能ですか?
$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
これは関数またはクラスインスタンスであると混乱します。それが関数であれば、関数をインスタンス化することは可能ですか?
はコンストラクタです。
これは、インスタンスが作成された後に直ちに呼び出される、クラス内の特別なパブリック関数です。あなたのケースで
mysqli
このようなコンストラクタを持つクラス、次のとおりです。
public function __construct($server, $user, $password, $dbname) {
// do something
}
参照:
http://php.net/manual/en/mysqli.construct.php
http://php.net/manual/en/language.oop5.decon.php
Geekfact:
あなたは何らかの形でクロージャを使って関数の "インスタンス"を得ることができます。これらは実際のインスタンスではありません。ちょうどcallables
です。
function createInstance() {
return function($a, $b) {
return $a + $b;
};
}
$myIndependendFunction = createInstance();
echo $myIndependendFunction(3, 2); // prints 5
「new」という言葉を使用すると、インスタンスが得られます。その時点で、クラスの '__construct()'関数が呼び出されます( 'new MyClass($ parameter)'で使用されるパラメータで)。 mysqliの機能的な形式について心配しないでください。これは、単にmysql_ *からmysqli_ *へのマイグレーションをより簡単にするための、従来の理由によるものです。 mysqliのオブジェクトに固執する。 – DanFromGermany
あなたが追加したリンクの両方で混乱が解消されたら、あなたはそれを釘付けにしました。クラスインスタンスにパラメータを渡すことが可能になりました。これは私を混乱させていた。 –
私が捨てたのは、インスタンスにパラメータがあるという事実です。また、mysqli拡張が関数であることも読んでいます。だから、もうちょっと意味が分かります。したがって、インスタンスはパラメータを取ることができますか? –
インスタント化ロジックを1か所にまとめたい場合は、関数内に現在のコードをラップして、すぐに使えるmysqliクラスを返すことができますか?
例:
<?php
function getMysqliConnection(){
return new mysqli("myServer", "myUser", "myPassword", "Northwind");
}
$conn = getMysqliConnection();
*あなた、あなたはあなたです。 'あなたがあなたを包含したい場合は、インスタンス化のロジックです.'は意味をなさない。 – Styphon
ありがとうstyphon .. – JParkinson1991
あなたは機能とを宣言それを使用するには、あなたはオブジェクトを宣言(この場合はmysqliのオブジェクト)、あなたはそれをインスタンス。
マニュアルを読むことができます。あなたを混乱させる何 http://www.php.net/manual/en/language.oop5.basic.php
それは、クラスのインスタンス –
ある構造コールは、これらのパラメータが渡されていること(http://php.net/manual/en/mysqli.construct.php)[ここです]。 msgstr "MySQLサーバとの接続を表すオブジェクトを返します。" – sjagr
関数を「インスタンス化」できたら、どういう意味でしょうか?どのような結果となり、このインスタンシエーションで何ができると思いますか? – CodeCaster