読者です 読者をやめる 読者になる 読者になる

Web言語のお勉強~ど素人が往く~

かつてVB6を1年くらい触った事があるだけのど素人がWeb言語に挑戦します。勉強結果を随時発表します。

PHPのお勉強「コンストラクタとデストラクタ」 難題付き♪


もう皆さんとっくにお気付きだと思いますが

はてなブックマークのTOPページの「はてなブログ特別枠」が期間限定で

f:id:MoneyReport:20140312013018p:plain

とある技術のはてなブログ

に切り替わっています。
しかもこの「とある技術のはてなブログ枠」は「はてな女子」や「はてな匿名ダイアリー」と同じく、1ブクマでもTOPページ表示されちゃうんです!
何が起きるかわかりますか?

f:id:MoneyReport:20140312013036p:plain

セルクマするだけで「はてなTOPに載れちゃう!」んですよ~。
技術関係の記事だと。
どうも載っている技術系の記事を見た感じでは「ソースコード」が載っている事が条件になっている様に思います。

ソースコードも掲載した記事を書いてセルクマすれば、はてなTOPに載れてしまうという技術系のブログ書いている人達にとっては天の恵み!
普通にはてなブログ書いている人達にとっては「早く普通のはてなブログ特別枠に戻せよ!」という憤りの聞こえてくる特別措置です。
多分、今週1週間で終わりです。

以前も「家族はてなブログ枠」というのが設けられた時期がありましたが、1週間くらいで普通枠に戻りました。
ソースコード付き技術ブログを書いている皆さんは、今週の金曜日位までがタイムリミットだと思いますので、ガシガシ記事を書いてセルクマしちゃいましょう(^^)/

PHPのコンストラクタとデストラクタ

という訳でPHPのソースコード付きの技術記事を書きます(笑)。
いえ、狙っているんじゃなくて普通にPHPの勉強してその結果を記事として書いているだけなんですけどね(^^;
今月途中から日々やっています♪

本日は「コンストラクタとデストラクタ」。
PHPにもコンストラクタとデストラクタがあるようです。

PHPマニュアル「コンストラクタとデストラクタ」
http://www.php.net/manual/ja/language.oop5.decon.php

一部引用させて頂きます。

コンストラクタ

void __construct ([ mixed $args [, $... ]] )


PHP 5 では、開発者がクラスのコンストラクタメソッドを宣言することができます。
コンストラクタメソッドを有するクラスは、新たにオブジェクトが 生成される度にこのメソッドをコールします。
これにより、 そのオブジェクトを使用する前に必要な初期化を行うことができます。

デストラクタ

void __destruct ( void )


PHP 5 では、C++ のような他のオブジェクト指向言語に似た概念のデストラクタが導入されました。
デストラクタメソッドは、 特定のオブジェクトを参照するリファレンスがひとつもなくなったときにコールされます。
あるいは、スクリプトの終了時にも順不同でコールされます。

クラスのインスタンス生成時点に呼ばれる関数がコンストラクタで、クラスのインスタンスが破棄されたりスクリプトが終了する時に呼ばれるのがデストラクタですね。
これはクラスを持つ他言語とほぼ一緒なのでわかりやすい概念ですね~。

コンストラクタには初期処理を持たせ、デストラクタには解放処理や後始末処理をやらせる感じでしょうか。

プログラミング

動作画面

f:id:MoneyReport:20140312012906p:plain

ソースコード

<?php
class Basho
{
    // 定数
    const AI = '';
    const YUUKI = '勇気';
    const CHIKARA = '';

    // コンストラクタ
    function __construct()
    {
        echo self::AI.'と<br />';
    }

    // 関数
    public function DisplayData()
    {
        echo self::YUUKI.'と<br />';
    }

    // デストラクタ
    function __destruct()
    {
        echo self::CHIKARA.'とが<br />';
    }
}

// クラスのインスタンス作成
$basho = new Basho();

// クラスの関数呼び出し
$basho->DisplayData();

?>

問題

クラスが指し示す物が「静かに眠る」その場所はどこか?

回答はコメントorブコメでお待ちしています(^^)/