デストラクタでファイルに書き込むと挙動不審? - PHPプロ!Q&A掲示板
1381
- 200P
- 200P
デストラクタでファイルに書き込むと挙動不審?
質問日時 / 2008年8月11日 17:00 (最終編集:8月12日 19:25) 回答数 / 5件
Questioner: NurseAngel
Tweet
キーワード / デストラクタ   __destruct  
fileReader.class.php
- class fileReaderClass{
- protected $file_name=NULL;
- protected $contents=NULL;
- public function __construct($file_name){
- $this->file_name=$file_name;
- }
- public function putContents($contents){
- $this->contents.=$contents;
- }
- public function __destruct(){
- $ret=file_put_contents($this->file_name,$this->contents);
- var_dump($this->file_name,$ret,file_get_contents($this->file_name));
- }
- }
sample.php
- require_once('./fileReader.class.php');
- $fp=new fileReaderClass('file.txt');
- $fp->putContents('abcdefg');
__constructでファイル名を指定、putContentsで中身を指定、__destructでファイルに保存しています。
var_dumpの時点では以下のように正しく表示されます。
$this->file_name→string(8) "file.txt"
$ret→int(7)
file_get_contents($this->file_name)→string(7) "abcdefg"
ところが実際には保存されていません。
試してみました。
・file_put_contentsをメンバ変数ではなく直書き
fileReader.class.php
- $ret=file_put_contents("file.txt",$this->contents);
保存される(※勘違い。実際には保存されません//2008/08/12)
・newをフルパスに
sample.php
- $fp=new fileReaderClass('C:\xampp\htdocs\file.txt');
保存される
・デストラクタではなく普通のメソッドにする
fileReader.class.php
- public function destruct(){
- $ret=file_put_contents($this->file_name,$this->contents);
- }
sample.php
- require_once('./fileReader.class.php');
- $fp=new fileReaderClass('file.txt');
- $fp->putContents('abcdefg');
- $fp->destruct();
↓
保存される
中でも特に、直書きだとOKなのに$this->file_nameと書くとアウトな原因がまったくわからないのですが、
何か理由があるのでしょうか?
XAMPP1.6.6a、PHP: 5.2.5、Apache/2.2.8 (Win32)
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。




ページのトップへ


GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。