Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menjana entiti daripada jadual pangkalan data dalam PHP

Bagaimana untuk menjana entiti daripada jadual pangkalan data dalam PHP

PHPz
Lepaskan: 2023-04-19 09:30:41
asal
734 orang telah melayarinya

PHP ialah bahasa pengaturcaraan web yang digunakan secara meluas yang sering digunakan untuk mencipta laman web dinamik, terutamanya untuk berinteraksi dengan pangkalan data. Dalam reka bentuk pangkalan data, jadual adalah blok binaan asas untuk menyimpan data dalam pangkalan data. Untuk menggunakan data ini dalam PHP, kita boleh menggunakan beberapa teknik untuk menjana kelas entiti secara automatik yang berinteraksi dengan jadual dalam pangkalan data. Dalam artikel ini, kita akan membincangkan cara melaksanakan kaedah menjana entiti daripada jadual pangkalan data menggunakan PHP.

1. Konsep kelas entiti

Dalam pengaturcaraan berorientasikan objek, kelas entiti merujuk kepada penerangan abstrak objek dalam dunia sebenar. Dalam PHP, kelas entiti biasanya kelas yang sepadan dengan jadual pangkalan data dan digunakan untuk mengendalikan data dalam jadual pangkalan data. Kelas entiti boleh mengandungi beberapa sifat (juga dipanggil medan) yang sepadan dengan lajur dalam jadual pangkalan data dan boleh mengandungi kaedah yang beroperasi pada data dalam jadual.

2. Persediaan

Sebelum mula menjana kelas entiti, kita perlu menyediakan pangkalan data dan mencipta jadual. Kami akan menggunakan jadual sampel berikut untuk demonstrasi:

BUAT JADUAL users (
id int(11) BUKAN NULL AUTO_INCREMENT,
name varchar(50) BUKAN NULL, PRIMARY KUNCI (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;password
Pernyataan SQL di atas mencipta jadual bernama "pengguna", yang mengandungi id, nama, e-mel , kata laluan, create_at dan updated_at, sejumlah 6 medan. created_at
3. Gunakan kod PHP untuk menjana kelas entiti updated_at
Dalam bahagian ini, kami akan menggunakan kod PHP untuk menjana kelas entiti secara automatik. Kelas entiti mengandungi medan yang diekstrak daripada jadual pangkalan data, serta fungsi untuk mengakses dan memanipulasi data. id
Langkah pertama, kita perlu menyambung ke pangkalan data. Gunakan kod berikut untuk menyambung ke pangkalan data MySQL:

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "dbname" ;

$conn = new mysqli($servername, $username, $password, $dbname);

Jika sambungan berjaya, kita perlu mengulangi setiap medan dalam jadual pangkalan data untuk mengekstrak namanya, jenis dan sifat lain. Kita boleh menggunakan kod PHP berikut untuk mengekstrak maklumat ini:


$sql = "DESCRIBE users";
$result = $conn->query($sql);

$ properties = array();

while ($row = $result->fetch_assoc()) {

}


Kod di atas menggunakan perintah SQL DESCRIBE untuk mengekstrak pengguna membentangkan semua medan dan menggunakan pertanyaan mysqli untuk menyimpan keputusan dalam tatasusunan $properties. Untuk setiap medan, kami mencipta objek stdClass, menyimpan nama medan, jenis dan sama ada harta itu diperlukan dalam objek dan menambah harta itu pada tatasusunan $properties.

Seterusnya, kita boleh menjana kelas entiti menggunakan kod berikut:

$class = new stdClass();
$property = new stdClass();
$property->name = $row['Field'];
$property->type = $row['Type'];
$property->required = ($row['Null'] == 'NO');
$properties[] = $property;
Salin selepas log masuk
$class->name = "User";

$ class->properties = $properties;

$template = file_get_contents("entity_template.txt");

$code = str_replace("__CLASS__", $class->name, $template) ;

$code = str_replace("__PROPERTIES__", generateProperties($class->properties), $code);

$code = str_replace("__CONSTRUCTOR__", generateConstructor($class), $code);

$code = str_replace("__GETTERS_SETTERS__", generateGettersSetters($class->properties), $code);

file_put_contents("User.php", $code);

The kod di atas Mula-mula buat objek stdClass $class dan tetapkan namanya kepada "Pengguna" dan sifatnya kepada tatasusunan $properties. Kami juga mengambil kod templat daripada fail entity_template.txt dan menggantikan beberapa pembolehubah menggunakan pengendali penggantian __CLASS__, __PROPERTIES__, __CONSTRUCTOR__ dan __GETTERS_SETTERS__. Akhir sekali, tulis kod yang dijana ke dalam fail bernama User.php.

4. Kod templat kelas entiti

Dalam bahagian sebelumnya, kami menggunakan fail entity_template.txt sebagai templat kod kelas entiti kami. Fail ini mengandungi pemegang tempat __CLASS__, __PROPERTIES__, __CONSTRUCTOR__ dan __GETTERS_SETTERS__, yang kami gunakan untuk menggantikan kod yang dijana. Berikut ialah kod sampel untuk entity_template.txt:

kelas

KELAS

{

}

?>

Fail templat mengandungi pemegang tempat __CLASS__ untuk nama kelas, yang digunakan untuk menggantikannya dengan nama kelas entiti yang kami hasilkan. Fail templat juga mengandungi ruang letak untuk __PROPERTIES__, __CONSTRUCTOR__ dan __GETTERS_SETTERS__, yang akan kami gantikan dengan kod yang dijana. Kami juga boleh membungkus kod pemegang tempat dalam kod kelas PHP yang sesuai.
5. Jana sifat kelas entiti

__PROPERTIES__

public function __CONSTRUCTOR__
{
    __CONSTRUCTOR_CODE__
}

__GETTERS_SETTERS__
Salin selepas log masuk
Untuk menjana sifat kelas entiti, kami menggelungkan semua sifat dan menggunakan kod berikut untuk menjana pengisytiharan harta:


fungsi generateProperties( $ hartanah) {

}

上述代码循环遍历$ properties数组中的每个属性,并将名称和必需性信息添加到属性声明中。最终,我们将属性声明代码返回到generateProperties函数中。

六、生成实体类构造函数

为了生成实体类的构造函数,我们可以使用以下代码:

function generateConstructor($class) {

$code = "";

foreach ($class->properties as $property) {
    $code .= "        $" . $property->name . "," . PHP_EOL;
}

return "public function __construct(" . substr($code, 0, -2) . ") {\n" .
    "        __CONSTRUCTOR_CODE__\n" .
    "    }";
Salin selepas log masuk

}

上述代码循环遍历所有属性并创建构造函数参数列表。最终,我们将参数列表添加到构造函数声明中并返回它。在构造函数中,我们还可以添加一些代码,例如将属性设置为传递给构造函数的值。

七、生成实体类的Getter和Setter

为了生成实体类的Getter和Setter函数,我们可以使用以下代码:

function generateGettersSetters($properties) {

$code = "";

foreach ($properties as $property) {
    $code .= generateGetter($property) . PHP_EOL;
    $code .= generateSetter($property) . PHP_EOL;
}

return $code;
Salin selepas log masuk

}

function generateGetter($property) {

return "public function get" . ucfirst($property->name) . "() {\n" .
       "        return \$this->" . $property->name . ";\n" .
       "    }";
Salin selepas log masuk

}

function generateSetter($property) {

return "public function set" . ucfirst($property->name) . "(\$" . $property->name . ") {\n" .
       "        \$this->" . $property->name . " = \$" . $property->name . ";\n" .
       "    }";
Salin selepas log masuk

}

上述代码使用generateGetter和generateSetter函数循环遍历所有属性,并为每个属性返回一个Getter和Setter函数。Getter和Setter函数负责获取和设置属性的值。

八、总结

在本文中,我们探讨了如何使用PHP代码实现自动生成实体类的方法,以便与数据库表交互。使用某些工具,如stdClass、mysqli以及一些字符串操作技巧,我们可以快速而简单地生成实体类,这些实体类与数据库表中的数据进行交互。如果您想从数据库中提取数据,那么这些实体类将是极其有用的,它们可以大大减少您的工作量,并使您的代码更加模块化和易于维护。

Atas ialah kandungan terperinci Bagaimana untuk menjana entiti daripada jadual pangkalan data dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan