メンバー変数の問題

WBOY
リリース: 2016-06-23 13:54:21
オリジナル
895 人が閲覧しました

最近自分で PHP を学び、コードの一部を見ました
class queryFactory extends Base {
var $link, $count_queries, $total_query_time;

queryFactory このクラスには変数がいくつかあります: $link、$count_queries、$ total_query_time。
ただし、queryFactory には connect メソッドがあります
Function connect($zf_host, $zf_user, $zf_password, $zf_database, $zf_pconnect = 'false', $zp_real = false) {
$this->database = $zf_database;
$ this->user = $zf_user;
$this->host = $zf_password;
$this->pConnect = $zf_pconnect; = $zp_real;

$this->database がここに表示されます。queryFactory と queryFactory の親クラスにデータベース メンバーの定義が見つかりませんでした。
しかし、変数データベースは確かに外部からアクセスできます。

var $link、$count_queries、$total_query_time などのデータベース変数をまとめて定義しない理由を作者に聞いてもいいですか。この方法を使用する利点と意義は何ですか

ディスカッションに返信(解決策)

function connect($zf_host, $zf_user, $zf_password, $zf_database, $zf_pconnect = 'false', $zp_real = false) {    $this->database = $zf_database;    $this->user = $zf_user;    $this->host = $zf_host;    $this->password = $zf_password;    $this->pConnect = $zf_pconnect;    $this->real = $zp_real;
ログイン後にコピー

これがphp4のプログラミングスタイルです

一般的に、クラスの属性リストで属性を明示的に宣言することは、これらを表現することです属性は存在し、使用できる必要があります


connect メソッドで受信パラメータをクラス属性に割り当てることに関しては、お勧めできません


これが php4 のプログラミング スタイルです

一般的に言えば、明示的な宣言はクラス属性で行われますリストの属性は、これらの属性が存在する必要があり、使用できることを示すためのものです


connect メソッドで受信パラメータをクラス属性に割り当てることに関しては、お勧めできません

$this->database データベースを考えることができますas var $link、$count_queries、$total_query_time; はこのクラスの属性ですか?

最初に説明してから理由を使用すると、多くのバグを減らすことができます。

これは、メソッドの外で直接定義するのと同じです。

他の変数と一緒に定義することはできません。これにより、変数が定義されていても使用されずにメモリを占有するという状況が回避されます。これが私の意見では最も合理的な場所です。


$this->database ? $link $count_queries はすべて ??? のプロパティです。

外でも使えます。


$this->database var $link、$count_queries、$total_query_time; のようなデータベースはこのクラスの属性であると考えて良いですか?

はい、そうではありませんが、それはこのクラスの属性です

呼び出しメソッドの観点から見ると、 connect メソッドを呼び出す限り、 $zf_database パラメーターを渡す必要があります。では、クラス属性として保存することに何の意味があるのでしょうか?
接続に渡されるパラメータはすべて 1 回限りのパラメータであり、使用後に破棄されるため、保存する必要はありません。そして、それは他の場所では使用されません

これは PHP の利点でもあり、変数を事前に宣言する必要はありません
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート