30

私は最近まで mysql* で手続き型アプローチを使用してきました。今は、mysqli とオブジェクト指向のアプローチに移行したいと考えています。多くのオンライン リソースや書籍では、PHP の場合でも、OOP は手続き型よりも優れていると述べています。オンライン チュートリアルをいくつか行った後、データベースに接続して値を選択する小さなプログラムを作成しました。オブジェクト指向のアプローチが優れている理由を知りたいですか? さらに、これはOO php Webページをコーディングする正しい方法ですか?

オブジェクト指向アプローチ

$host = "localhost";
$username = "root";
$password = "";
$dbname = "compdb";

@ $db = new mysqli($host, $username, $password, $dbname);

if(mysqli_connect_errno())
{
    die("Connection could not be established");
}

$query = "SELECT company_id FROM company_basic_details WHERE company_name = 'ABC'";
$result = $db->query($query);

$total_num_rows = $result->num_rows;

echo "The Results Are : <br>";

while($row = $result->fetch_array())
{
    echo $row['company_id'];
}
?>

手続き型アプローチ

<?php

$host = "localhost";
$username = "root";
$password = "";
$dbname = "compdb";

@ $db = mysqli_connect($host, $username, $password, $dbname);

if(mysqli_connect_errno())
{
    die("Connection could not be established");
}

$query = "SELECT company_id FROM company_basic_details WHERE company_name = 'ABC'";
$result = mysqli_query($db, $query);

$total_num_rows = mysqli_num_rows($result);

echo "The Results Are : <br>";

while($row = mysqli_fetch_array($result))
{
    echo $row['company_id'];
}
?>
4

1 に答える 1

39

主な理由は、PHP がオブジェクト指向プログラミングの方向に着実に進んでいることです。

mysqli_xxx()OOP に相当するものではなく、関数を使用しても問題はありません。コードに関する限り、それはまったく同じです。

唯一の問題は、適切に作成された PHP コードと人々が考えるものに関して、ますます遅れをとってしまうことです。

PHP のほとんどの DB コードにとって理想的であると考えられている PDO ライブラリーが OOP 専用であることは注目に値します。手続き型インターフェイスはありません。また、最近のいくつかのバージョンで PHP に追加されたその他の新機能のほとんどもそうではありません。PHP を最大限に使いたいのであれば、とにかく OOP を知る必要があります。

DB の拡張クラスを作成する機能についてもポイントがあります。次のようなものです。

class myDB extends mysqli {
     .... your own stuff here to extend and improve the base mysqli class
}

もちろん、手続き型コードでも同じことを実現できますが、OOP の方法ほどきれいではありません。もちろん、それは実際にクラスを拡張したい場合にのみ関係します。

ただし、最初のステップとして、 から に移動するmysql_xxx()ことmysqli_xxx()は素晴らしいスタートです。OOP インターフェースを使用するように全体を移行することはさらに良いことですが、mysqli 関数に切り替えることは良い出発点です。

最初に手続き型インターフェースを使用すると、確かに古い関数からの移行がmysql_xx()容易になります。そのため、最初は OOP インターフェースへの切り替えがあまりにも飛躍的である場合でも、すべてを一度に行う必要があるとは思わないでください。手続き型mysqli関数への変換から始めて、後で OOP メソッドに切り替えます。どちらのジャンプも、それだけではそれほど大きくなりません。

于 2013-02-05T14:55:50.873 に答える