<?php
trait LogTrait
{
public function log()
{
echo "Instance created" . PHP_EOL;
}
}
abstract class Score
{
use LogTrait;
private $subject;
protected $points;
public function __construct($subject, $points)
{
$this->subject = $subject;
$this->points = $points;
$this->log();
}
abstract protected function getResult();
public function getInfo()
{
return "{$this->subject}, {$this->points}, {$this->getResult()}";
}
}
class MathScore extends Score
{
public function __construct($points)
{
parent::__construct("Math", $points);
}
protected function getResult()
{
echo "MathScore method" . PHP_EOL;
return $this->points >= 50 ? "Pass" : "Fail";
}
}
class EnglishScore extends Score
{
public function __construct($points)
{
parent::__construct("English", $points);
}
protected function getResult()
{
echo "EnglishScore method" . PHP_EOL;
return $this->points >= 95 ? "Pass" : "Fail";
}
}
class User
{
use LogTrait;
private $name;
private $score;
public function __construct($name, $score)
{
$this->name = $name;
$this->score = $score;
$this->log();
}
public function getInfo()
{
return "{$this->name}, {$this->score->getInfo()}";
}
}
$user1 = new User("Taro", new MathScore(70));
$user2 = new User("Jiro", new EnglishScore(90));
echo $user1->getInfo() . PHP_EOL;
echo $user2->getInfo() . PHP_EOL;
カテゴリー: PHP
PHP logメソッド
<?php
interface Loggable
{
public function log();
}
abstract class Score implements Loggable
{
private $subject;
protected $points;
public function __construct($subject, $points)
{
$this->subject = $subject;
$this->points = $points;
$this->log();
}
public function log()
{
echo "Instance created: {$this->subject}" . PHP_EOL;
}
abstract protected function getResult();
public function getInfo()
{
return "{$this->subject}, {$this->points}, {$this->getResult()}";
}
}
class MathScore extends Score
{
public function __construct($points)
{
parent::__construct("Math", $points);
}
protected function getResult()
{
echo "MathScore method" . PHP_EOL;
return $this->points >= 50 ? "Pass" : "Fail";
}
}
class EnglishScore extends Score
{
public function __construct($points)
{
parent::__construct("English", $points);
}
protected function getResult()
{
echo "EnglishScore method" . PHP_EOL;
return $this->points >= 95 ? "Pass" : "Fail";
}
}
class User implements Loggable
{
private $name;
private $score;
public function __construct($name, $score)
{
$this->name = $name;
$this->score = $score;
$this->log();
}
public function log()
{
echo "Instance created: {$this->name}" . PHP_EOL;
}
public function getInfo()
{
return "{$this->name}, {$this->score->getInfo()}";
}
}
$user1 = new User("Taro", new MathScore(70));
$user2 = new User("Jiro", new EnglishScore(90));
echo $user1->getInfo() . PHP_EOL;
echo $user2->getInfo() . PHP_EOL;
PHP 抽象メソッド
<?php
abstract class Score
{
private $subject;
protected $points;
public function __construct($subject, $points)
{
$this->subject = $subject;
$this->points = $points;
}
abstract protected function getResult();
public function getInfo()
{
return "{$this->subject}, {$this->points}, {$this->getResult()}";
}
}
class MathScore extends Score
{
public function __construct($points)
{
parent::__construct("Math", $points);
}
// protected function getResult()
// {
// echo "MathScore method" . PHP_EOL;
// return $this->points >= 50 ? "Pass" : "Fail";
// }
}
class EnglishScore extends Score
{
public function __construct($points)
{
parent::__construct("English", $points);
}
protected function getResult()
{
echo "EnglishScore method" . PHP_EOL;
return $this->points >= 95 ? "Pass" : "Fail";
}
}
class User
{
private $name;
private $score;
public function __construct($name, $score)
{
$this->name = $name;
$this->score = $score;
}
public function getInfo()
{
return "{$this->name}, {$this->score->getInfo()}";
}
}
$user1 = new User("Taro", new MathScore(70));
$user2 = new User("Jiro", new EnglishScore(90));
echo $user1->getInfo() . PHP_EOL;
echo $user2->getInfo() . PHP_EOL;
PHP 子クラス
<?php
class Score
{
private $subject;
private $points;
public function __construct($subject, $points)
{
$this->subject = $subject;
$this->points = $points;
}
private function getResult()
{
return $this->points >= 80 ? "Pass" : "Fail";
}
public function getInfo()
{
return "{$this->subject}, {$this->points}, {$this->getResult()}";
}
}
class MathScore extends Score
{
public function __construct($points)
{
parent::__construct("Math", $points);
}
}
class EnglishScore extends Score
{
public function __construct($points)
{
parent::__construct("English", $points);
}
}
class User
{
private $name;
private $score;
public function __construct($name, $score)
{
$this->name = $name;
$this->score = $score;
}
public function getInfo()
{
return "{$this->name}, {$this->score->getInfo()}";
}
}
$user1 = new User("Taro", new MathScore(70));
$user2 = new User("Jiro", new EnglishScore(90));
echo $user1->getInfo() . PHP_EOL;
echo $user2->getInfo() . PHP_EOL;
PHP クラスメソッド
<?php
class User
{
public $name;
public $score;
private static $count = 0;
public function __construct($name, $score)
{
$this->name = $name;
$this->score = $score;
User::$count++;
}
public static function getUserCount()
{
return User::$count;
}
}
$user1 = new User("Taro", 70);
$user2 = new User("Jiro", 90);
//User::$count++;
//echo User::$count . PHP_EOL;
echo User::getUserCount() . PHP_EOL;
PHP クラスプロパティ
<?php
class User
{
public $name;
public $score;
public static $count = 0;
public function __construct($name, $score)
{
$this->name = $name;
$this->score = $score;
User::$count++;
}
}
// $count = 0;
$user1 = new User("Taro", 70);
// $count++;
$user2 = new User("Jiro", 90);
// $count++;
// echo $count . PHP_EOL;
echo User::$count . PHP_EOL;
PHP setScoreメソッド
<?php
class User
{
public $name;
public $score;
public function __construct($name, $score)
{
$this->name = $name;
$this->score = $score;
}
public function getInfo()
{
return "{$this->name}, {$this->score}";
}
}
$user1 = new User("Taro", 70);
$user2 = new User("Jiro", 90);
$user1->score = 900;
echo $user1->getInfo() . PHP_EOL;
echo $user2->getInfo() . PHP_EOL;
PHP getInfoメソッド
<?php
class User
{
public $name;
public $score;
public function __construct($name, $score)
{
$this->name = $name;
$this->score = $score;
}
public function getInfo()
{
return "{$this->name}, {$this->score}";
}
}
$user1 = new User("Taro", 70);
$user2 = new User("Jiro", 90);
echo $user1->getInfo() . PHP_EOL;
echo $user2->getInfo() . PHP_EOL;
PHP プロパティにアクセス
<?php
class User
{
public $name;
public $score;
}
$user1 = new User();
$user1->name = "Taro";
$user1->score = 70;
$user2 = new User();
$user2->name = "Jiro";
$user2->score = 90;
echo $user1->name . PHP_EOL;
echo $user1->score . PHP_EOL;
echo $user2->name . PHP_EOL;
echo $user2->score . PHP_EOL;
PHP array_map
<?php
// $addFive = function($n)
// {
// return $n + 5;
// };
// $addFive = fn($n) => $n + 5;
$scores = [70, 90, 80];
// $updatedScores = array_map($addFive, $scores);
$updatedScores = array_map(fn($n) => $n + 5, $scores);
print_r($updatedScores);