2017-12-15 9 views
-7

ログを管理するクラスを作成したいと考えています。私はこのクラスを書き始める。そして、私はこれをいつ使うべきか、単純な変数を使うべきかどうかはわかりません。ここにコードがあります。

<?php 
    class Log{ 
     private $name = "record.log"; 

     public function create($this->name){ 
      $handle = fopen($this->name, "a+"); 
      fclose($handle); 
     } 
    } 

それとも私だけ$name代わりにOOPで$this->name?

+3

http://php.net/manual/en/language.oop5.basic.php –

+2

これはクラスではない –

+0

$ nameは、関数のスコープ内で変数を検索します。クラスの中で関数の外で定義された変数を使用する場合は、$ this-> nameを使用してアクセスする必要があります。 –

答えて

1

の使用する必要があります。
$this->nameクラスによって定義され、オブジェクト内でグローバルにアクセス可能ですされているオブジェクトのプロパティです。
$nameクラスメソッドの内部で使用する変数であり、唯一のオブジェクトメソッド(関数)非常に簡単に

内でローカルにアクセスできます。

class myClass{ 

    private $name = "record.log"; 

    function myMethod(){ 
     $name = 'this exists only in the method myMethod()'; 
     $this->name; // this contains the 'record.log' string 
    } 

} 

クラスの外からは、内に定義された変数$nameにアクセスすることはできませんオブジェクト。

あなただけのクラスではなくオブジェクト名を使用して、それを呼び出す必要があり、オブジェクトの外部から定義されたプロパティは$ nameにアクセスすることができます:あなたが直接アクセスしてプライベートとしてオブジェクトのプロパティを定義ししかし

$obj = new myClass(); 
$log_file = $obj->name; // this would contain the string 'record.log' 

オブジェクトの外側から制限されます。それにアクセスできるようにするには、プライベートプロパティへの読み書きを処理するgetter/setterメソッドを定義する必要があります。

// add to the class methods 
public function getName(){ 
    return $this->name; 
} 

public function setName($value){ 
    // do some validation of the value first 
    //... 
    // then assign the value 
    $this->name = $value; 
} 

だから今、あなたはステートメントを使用してオブジェクトの外部からオブジェクトのプロパティ$名にアクセスすることができます

echo $obj->getName(); // prints record.log 
$obj->setName('new.log'); 
echo $obj->getName(); // prints new.log 
+0

あなたは実際にそれをすべて書き出しましたか、それをどこかから取り出しましたか? –

+0

私は今気分で書いています;) – ino

+0

hehe、ok cool。さて、OPがそれから学ぶことを祈っています:) –

関連する問題