【PHP】PHP基础总结②

类和对象

用课堂作为样本

<?php
    // 自動車クラス
    class Car {
        // スピードのプロパティ
        public $speed;
        // ナンバーのプロパティ
        public $number;
        // コンストラクタ
        function __construct() {
            echo "インスタンスの生成<br>";
        }
        // 走行メソッド
        function drive() {
            echo "「{$this->number}」が{$this->speed}km/hで走行<br>";
        }
        // 停車メソッド
        function stop() {
            echo "「{$this->number}」が停車<br>";
            $this->speed = 0;
        }
    }
?>
<?php
    // 自動車クラスの読み出し
    require_once("car.php");
    // インスタンスの生成
    $car = new Car();
    // ナンバー、スピードの設定
    $car->number = "あ12-34";
    $car->speed = 50;
    // 自動車の走行と停車
    $car->drive();
    $car->stop();
?>

多个实例

<?php
    // 自動車クラスの読み出し
    require_once("car.php");
    // インスタンスの生成
    $car1 = new car();
    $car2 = new car();
    // ナンバー、スピードの設定($car1)
    $car1->number = "あ12-34";
    $car1->speed = 50;
    // 自動車の走行と停車($car1)
    $car1->drive();
    $car1->stop();
    // ナンバー、スピードの設定($car2)
    $car2->number = "い56-78";
    $car->speed = 40;
    // 自動車の走行と停車($car2)
     $car2->drive();
    $car2->stop();
?>

参数和属性 shù hé

<?php
    // 自動車クラス
    class Car {
        // スピードのプロパティ
        private $speed;
        // ナンバーのプロパティ
        private $number;
        // コンストラクタ
        function __construct($number) {
            $this->number = $number;
            echo "{$this->number}」 のインスタンス生成<br>";
        }
        // 走行メソッド
        function drive($speed) {
            $this->speed = $speed;
            echo "「{$this->number}」 が{$this->speed}km/hで走行<br>";
        }
        // 停車メソッド
        function stop() {
            echo "「{$this->number}」 が停車<br>";
            $this->speed = 0;
        }
    }
    // インスタンスの生成
    $car1 = new Car("あ12-34");
    $car2 = new Car("い56-78");
    // 自動車の走行と停車
    $car1->drive(50);
    $car1->stop();
    $car2->drive(40);
    $car2->stop();
?>

封装・静态成员

封装

<?php
    class Person {
        // 名前
        private $name;
        // $nameのセッター
        function setName($name) {
            $this->name = $name;
        }
        // $nameのゲッター
        function getName() {
            return $this->name;
        }
    }
    // インスタンスの生成
    $p = new Person();
    $p->setName("山田太郎");
    echo "名前:{$p->getName()}";
?>

静态成员

<?php
    class Car {
        private $serial = 0; // 製造番号(インスタンスプロパティ)
        private static $carNumber = 0; // 生産台数(静的プロパティ)
        // コンストラクタ
        function __construct() {
            self::$carNumber++; // 静的メンバの値をインクリメント
            $this->serial = self::$carNumber; // idを決める
        }
        // 自動車の製造番号を表示(インスタンスメソッド)
        function showSerial() {
            echo "&nbsp;&nbsp;製造番号:{$this->serial}<br>";
        }
        // 自動車の生産台数を求める(静的メソッド)
        static function showCarNumber() {
            $number = self::$carNumber;
            echo "生産台数:{$number}<br>";
        }
    }
    // 自動車の生産台数の表示
    Car::showCarNumber();
    // 1台目の自動車の生成
    $car1 = new Car();
    $car1->showSerial();
    // 自動車の生産台数の表示
    Car::showCarNumber();
    // 3台目までの自動車の生成
    $car2 = new Car();
    $car2->showSerial();
    $car3 = new Car();
    $car3->showSerial();
    // 自動車の生産台数の表示
    Car::showCarNumber();
?>

传承

继承的实现

<?php
    // 計算クラス(足し算・引き算しかできない) 
    class Calc {
        // 数値1
        protected $num1;
        // 数値2
        protected $num2;
        // 値の設定
        function setNumbers($num1, $num2) {
            $this->num1 = $num1;
            $this->num2 = $num2;
        }
        // 足し算の結果表示
        function add() {
            $ans = $this->num1 + $this->num2;
            echo "{$this->num1} + {$this->num2} = {$ans}<br>";
        }
        // 引き算の結果取得
        function sub() {
            $ans = $this->num1 - $this->num2;
            echo "{$this->num1} - {$this->num2} = {$ans}<br>"; 
        }
    }
    // 拡張計算クラス(掛け算・割り算もできる)
    class CalcEx extends Calc {
        // 掛け算の結果表示
        function mul() {
            $ans = $this->num1 * $this->num2;
            echo "{$this->num1} × {$this->num2} = {$ans}<br>";
        }
        // 割り算の結果表示
        function div() {
            $ans = $this->num1 / $this->num2;
            echo "{$this->num1} ÷ {$this->num2} = {$ans}<br>";
        }
    }
    // インスタンスの生成
    $calc = newCalcEx(); // CalcExクラスのインタンス生成
    // 値の設定
    $carc->setNumbers(12, 3);
    // 加減乗除の計算の実行
    $calc->add(); // 加算(Calcクラスのメソッド)
    $calc->sub(); // 減算(Calcクラスのメソッド)
    $calc->mul(); // 乗算(CalcExクラスのメソッド)
    $calc->div(); // 除算(CalcExクラスのメソッド)
?>

应用继承

抽象类和重写

<?php
    // リスト生成クラス
    abstract class Abslist {
        // リストの開始(抽象メソッド)
        abstract function startList();
        // リストの終了(抽象メソッド)
        abstract function endList();
        // リスト生成メソッド
        function show($array) {
            $this->startList();
            foreach ($array as &$value) {
                echo "<li>" . $value . "</li>\n";
            }
            $this->endList();
        }
    }
?>
<?php
    // 親クラスの読み出し
    require_once("abslist.php");
    // リストクラス(ulによるリスト)
    class UlList extends AbsList {
        // リストの開始(実装)
        function startList() {
            echo "<ul>\n";
        }
        // リストの終了(実装)
        function endlist() {
            echo "</ul>\n;
        }
    }
?>
<!DOCTYPE html>
<html>
    <head>
        <title>リストの生成</title>
        <meta chaset="UTF-8">
    </head>
    <body>
        <h1></h1>
        <?php
            require_once("ullist.php");
            // UlList
            $ls = new UlList();
            //$ls = new AbsList();
            $data = ["", "", ""];
            $ls->show($data);
        ?>
    </body>
</html>

饼干和会话

使用PHP处理会话

<!DOCTYPE html>
<html>
    <head>
        <title>セッションの活用</title>
        <meta chaset="UTF-8">
    </head>
    <body>
        <h1>セッション値の生成</h1>
        <?php
            session_start(); // セッションスタート
            $_SESSION["data"] = "PHP";
            echo "<p>セッションID:" . session_id() . "</p>";
            echo "<p>設定した値:{$_SESSION["data"]}</p>"; 
        ?>
        <a href="sample6-8_2.php>次へ</a>
    </body>
</html>
<!DOCTYPE html>
<html>
    <head>
        <title>セッションの活用2</title>
        <meta chaset="UTF-8">
    </head>
    <body>
        <h1>セッション値の確認</h1>
        <?php
            session_start(); // 
            echo "<p>セッションID:" . session_id() . "</p>";
            echo "<p>設定した値:{$_SESSION["data"]}</p>"; 
        ?>
        <a href="sample6-8_1.php>トップへ</a>
    </body>
</html>

使用PHP操作数据库。

使用PHP操作数据库

<?php
    try {
        // (1) 接続
        $db = new PDO('mysql:host=localhost;dbname=school', 'root', 'root');
        // (2) SQLクエリ作成
        $stmt = $db->prepare("SELECT * FROM student;");
        // (3) SQLクエリ実行
        $res = $stmt->execute();
        if ($res) {
            // (4) 該当するデータを取得
            $all = $stmt->fetchALL();
            foreach($all as $loop) {
                // (5) 結果を表示
                echo "id&nbsp;=&nbsp;" . $loop["id"];
                echo "&nbsp;name&nbsp;=&nbsp;" . $loop["name"];
                echo "&nbsp;grade&nbsp;=&nbsp;" . $loop["grade"] . "<br>";
            }
        }
        // 切断
        $db = null;
    } catch(PDOException $e) {
        echo "データベース接続失敗<br>";
        echo $e->getMessage();
    }
?>

– 异常处理的编写

try {
    例外が発生しそうな処理
} catch(例外クラス 変数名) {
    例外処理
}

插入数据

<?php 
    try {
        // (1) 接続
        $db = new PDO('mysql:host=localhost;dbname=school', 'root', 'root');
        // (2) 挿入するデータの作成
        $id = 3003;
        $name = "";
        $grade = 3;
        // (3) SQLクエリ作成
        $stmt = $db->prepare("INSERT INTO student VALUES(?, ?, ?);"); 
        $stmt->bindParam(1, $id, PDO::PARAM_INT);
        $stmt->bindParam(2, $name, PDO::PARAM_STR);
        $stmt->bindParam(1, $grade, PDO::PARAM_INT);
        // (4) SQL  
        $res = $stmt->execute();
        // (5)
        $db = null;
    } catch(PDOException $e) {
        echo "データベース接続失敗<br>";
        echo $e->getMessage();
    }
?>

请以中文为母语的人将下面的句子进行释义:

参考

 

bannerAds