PHPのコンストラクターはクラス名ではなく__construct()を使うべき?その利点を解説
はい、クラス名をそのままコンストラクターとして使う代わりに、マジックメソッド __construct() を使用することには、いくつかの重要な利点があります。
__construct() を使う主な利点
- クラス名の変更に強い: マジックメソッド
__construct()はPHP 5で導入されました。クラス名と同じ名前のメソッドをコンストラクターにすると、後からクラス名を変更した際にコンストラクター名も修正する必要があります。__construct()を使えばその手間がなく、DRY(Don't Repeat Yourself) の原則にも沿った保守性の高いコードになります。 - 親クラスのコンストラクターを簡単に呼び出せる: 子クラスがある場合、
parent::__construct()と書くだけで、親クラスのコンストラクターを明確かつ簡単に呼び出せます。
コード例
<?php
class myclass{
public function __construct(){
echo 'The class "', __CLASS__, '" was initiated!'."\n";
}
}
class childclass extends myclass{
public function __construct() {
parent::__construct();
print "In SubClass constructor ";
}
}
$myobj = new childclass();
?>
実行結果
The class "myclass" was initiated! In SubClass constructor
この例では、子クラス childclass のインスタンス生成時に、まず parent::__construct() によって親クラスのコンストラクターが実行され、その後に子クラス独自の処理が続いています。
補足:__CLASS__ について
__CLASS__ は「マジック定数」と呼ばれるもので、この場合はそれが呼び出されたクラスの名前を返します。デバッグやログ出力の際に便利です。
注意点
クラス名と同じ名前のメソッドをコンストラクターとする「旧式の書き方」は、PHP 7.0で非推奨(DEPRECATED)となり、将来のバージョンで削除される予定です。新しく書くコードでは、必ず __construct() を使用しましょう。
-
PHPのimagesetthickness()関数で線画の太さを設定する方法
imagesetthickness()は、PHPに組み込まれている関数の一つで、線を描画するときの太さ(ライン幅)を設定するために使用します。構文bool imagesetthickness($image, $thickness)パラメータimagesetthickness()は、$imageと$thicknessという2つのパラメータを受け取ります。$image − imagecreatetruecolor()などの画像生成関数によって返される画像リソースを指定します。このリソースをもとに画像のサイズが決定されます。$thickness − 線の太さをピクセル単位で指定します。戻り値imag
-
PHPのimagesetstyle()関数で線画のスタイルを設定する方法をわかりやすく解説
imagesetstyle()は、PHPのGDライブラリに組み込まれた関数の一つで、線画(ライン描画)のスタイルを設定するために使用されます。この関数で設定したスタイルは、imageline()やimagepolygon()など、あらゆる線描画関数と組み合わせて利用できます。 ここでいう「スタイル」とは、複数の色を順番に並べることで実現する破線や点線などのパターンのことです。スタイル配列に格納された色が先頭から順に適用され、パターンとして繰り返し描画される仕組みになっています。 構文 bool imagesetstyle(resource $image, array $style) パラメータ