ヤマカサのプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

PHP 学習 part. 9

クラスとオブジェクト

今回でクラスとオブジェクトは終わりです。

名前空間

名前空間はライブラリなどで名前の衝突を避けるためにりようされます。クラス名などを冗長にせずに定義できまうす。

Apple.php
<?php

namespace Food\Fruits;

class Apple
{
    private $color = "red";
    public function getColor()
    {
        return $this->color;
    }
}
program.php
<?php

require_once 'Apple.php';

$apple = new Food\Fruits\Apple();
echo $apple->getColor(), PHP_EOL;

例外処理

try-catch 文を使った例外処理です。

<?php

function div($v1, $v2)
{
    if ($v2 === 0){
        throw new Exception("0除算が発生しています");
    }
    return $v1 / $v2;
}

try {
    $x = div(4, 0);
} catch(Exception $e) {
    echo $e->getMessage(), PHP_EOL;
}

参照

オブジェクトの破棄について理解するためには参照の知識が必要になります。参照は変数のもつ値の格納領域を示します。

参照代入演算子 &=
<?php

$a = 77;
$b =& $a;
$b++;
echo $a, PHP_EOL; // 78
引数を参照で受け取る
<?php

$a = 77;
$b =& $a;
$b++;
echo $a, PHP_EOL; // 78

function array_double($array)
{
    for ($i = 0, $size = count($array); $i < $size; $i++){
        $array[$i] *= 2;
    }
}

// 参照で受け取る
function array_ref_double(&$array)
{
    for ($i = 0, $size = count($array); $i < $size; $i++){
        $array[$i] *= 2;
    }
}

$a = array(1, 2, 3);
array_double($a);

foreach ($a as $i) {
    echo $i, PHP_EOL;
}

$b = array(1, 2, 3);
array_ref_double($b);

foreach ($b as $i) {
    echo $i, PHP_EOL;
}

参照で引数を受け取らない場合、配列に変更を加えても変更は保持されないので、参照を渡します。

パーフェクトPHP

パーフェクトPHP

感想

PHP のクラスとオブジェクトについて学びました。PHP でもオブジェクト指向のプログラミングを行うことができるので、デザインパターンの学習も再開したいと思います。