static(静的)
staticがついているとオブジェクトを作成しなくても使える(newしなくていい)
またまたエラーだが
class Bill{
に丸括弧はいらなかった
class Bill(){
にしてしまっていた。
--->bill.php
<?php
class Bill{
public static $TAX=0.1;//定数ぽく書いてるが定数じゃないよ
public static function payoff($money){
$money=(int)($money*(1+self::$TAX));
$money=number_format($money);
return $money;
}
}
?>
--->usestatic.php
<?php
require_once("bill.php");
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>staticなプロパティとメソッドを使う</title>
</head>
<body>
<h1>staticなプロパティとメソッド</h1>
<?php
$money=10000;
echo "税抜き価格".$money."円";
echo "消費税率".Bill::$TAX."%";
echo "税込み価格:".Bill::payoff($money)."円";
?>
</body>
</html>
staticにアクセスするときは
クラス名::変数名
クラス名::メソッド名(hoge,hoge2)
または
self::変数名
self::メソッド名(hoge,hoge2)
->を使わない。
$thisもつかわない
$money=number_format($money);
number_format 3桁ごとにカンマを入れてくれる関数
最初からカンマを入れてしまうと文字になり数値にならないので地味に便利らしい。
クラスの継承
親クラスのメソッドを取ってくるときも
parent::
::とする。
--->mechanicalpencil.php
<?php
require_once("pencil.php");//親クラスにしようと思っているものを読み込む
class MechanicalPencil extends Pencil{
//追加したいプロパティだけ書く
private $thickness;
public function __construct($maker,$hardness,$price,$thickness){
parent::__construct($maker,$hardness,$price);
$this->thickness=$thickness;
}
public function printAllData(){
parent::printData();
echo "<br>芯の太さ:".$this->thickness;
}
}
?>
さすがにさっぱりになってきた。
エラーが出てたけど引数を直したら治った。
$item3=new MechanicalPencil("ばった","B",80,0.8);
$item3->printAllData();
この第4引数をいれてなかったらエラーさんが出ましたよ
出力がおかしいがpencilの方に自分で入れたhrのせいだろう。