在这一节中,我们将杀害二鸟一石。不仅我们将学习如何将面向对象的PHP和MySQL ,但是我们将学习如何组对象。在这种情况下,你将建立一个一流的UsersGroup其中将包含一系列的用户对象。每个用户对象将建立连续使用从MySQL查询。要尝试这个实际例子,您首先需要建立一个用户表在MySQL数据库。我使用的是MySQL数据库命名为' kirupa_oop ` 。使用下面的查询创建表并插入样本数据。
/* Create Users table */
CREATE TABLE `users` (
`user_id` INT NOT NULL AUTO_INCREMENT,
`user_name` TEXT NOT NULL,
PRIMARY KEY (`user_id`)
);
/* Insert sample data into Users table */
INSERT INTO `users`
( `user_id`, `user_name` )
VALUES
( '', 'kirupa' ),
( '', 'bwh2' );
这非常简单的表格只是有两个栏目: ` user_id '和'用户名' 。您不妨添加自己的名称,此表为香料的事情了。
如所承诺的那样,我们将创造一个UsersGroup类。该工作组将包含一系列的用户对象,其中每一项创建使用数据从我们的MySQL的表。我所有的表格上的数据库名为` kirupa_oop ` 。如果您的数据库没有名为' kirupa_oop ' ,您必须更改数据库名称中的设置阶级所示。这里是我们的UsersGroup阶级的行动:
$group = new UsersGroup;
/* loop through our group, echo user names */
foreach( $group->getUsers() as $user ) {
echo $user->getName().'
';
}
/* User class, same as before */
class User {
private $name;
function __construct( $attribs ) {
$this->name = $attribs['name'];
}
/* name methods */
function setName( $val ) {
$this->name = $val;
return;
}
function getName() {
return $this->name;
}
}
/* Contains a group of User objects */
class UsersGroup {
private $name; // name of group
private $group = array(); // group of User objects
function __construct() {
/* Connect to DB using Settings */
$link = mysql_connect(
Settings::$DATABASE['host'],
Settings::$DATABASE['username'],
Settings::$DATABASE['password']
);
mysql_select_db ( Settings::$DATABASE['database'], $link );
/* Get table names from Settings class */
$tbl_users = Settings::$TABLES['tbl_users'];
/* Query */
$sql = "SELECT user_id AS ID,
user_name AS name
FROM $tbl_users";
$result = mysql_query( $sql ) or die(mysql_error());
/* Adds user to group with each row of data */
while( $row = mysql_fetch_array($result) ) {
$this->addUser( $row );
}
}
/*
Add a user to Group
Does simple check to see if we pass an array (like $attribs)
or if we pass an object (like a User object)
*/
function addUser( $user ) {
if( is_object( $user ) ) {
array_push( $this->group, $user );
}
if( is_array( $user ) ) {
$noob = new User( $user );
array_push( $this->group, $noob );
}
return;
}
/* Returns the group (which is an array) */
function getUsers() {
return $this->group;
}
}
/* Holds our site settings */
class Settings {
static $DATABASE = array(
// change these as needed 'database' => 'kirupa
首先要说明的是,我们举办我们的数据库连接和资料表名称在我国设置一流的,在静态变量。如果我们需要改变我们的数据库名称,表名称,数据库用户名,等等,我们将只能做,我们设置一流的(这是最好在一个单独的,包括档案) 。我们的用户级是什么新鲜事-它不仅拥有财产的名称,仍然获得了一系列数据经由_ _construct。
让我们来看看的代码UsersGroup类。如果您已经连接到MySQL数据库与PHP之前,连接应该是什么新鲜事。唯一不同的是,我们使用静态变量为我们的连接设置。我们这样做对我们的名字,因为表内的双引号,我们的设置一流的静态变量不能被解析。也就是说,只有使用设置: : $表[ ' tbl_users ' ]直接在我们的双引号SQL查询将导致一个错误。
我们的SQL查询产生了一系列行,我们指定为结果。使用while循环,我们通过我们的$结果阵列。每个元素美元的结果是一系列的价值观(如编号和名称) 。同样,这看起来应该很熟悉的人谁使用PHP来访问MySQL数据库。现在的面向对象的一部分:我们然后通过每一行(列)从我们的MySQL查询我们addUser方法。首先, addUser方法检查,如果被通过一系列的数据(如$行)或整个用户对象。在这种情况下,我们正通过一系列的数据。使用该阵列的数据, addUser创建一个用户对象( $ noob ) ,然后补充说,用户对象的组阵列( $组) 。
注意对列名:当我们的用户目标是建立一系列的数据,构造是寻找所谓的数组元素的名称。为了满足这一要求,我们使用SQL别名,可以看到美元的数据库。如果我们没有别名用户名姓名美元的连续变量将不会举行所谓的数组元素的名称,而是用户名。因此,它不会正确填入变量的名称在我们的用户对象。我宁愿让我定制的SQL ,而不是我的PHP类方法,因为我更可能重用的PHP类方法比SQL查询。举例来说,如果我创建一个狗类,我也希望getName方法和构造。而不是修改几个PHP的方法,以支持而不是狗的用户,我宁愿修改一个SQL查询。另外,您也可以重新命名您的用户名栏,只是名称。这将最大限度地重用,但可能会伤害你的能力理解更复杂的SQL查询和数据库设计。
您可能会考虑这一类是过于复杂。毕竟,您可能代码所有这一切都在15行内经常PHP页面。因此,哪里的优势?好吧,看我们如何利用我们的对象:
/* instantiate group */
$group = new UsersGroup;
/* loop through our group, echo user names */
foreach( $group->getUsers as $user ) {
echo $user->getName().'
';
}

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。

在PHP中,trait适用于需要方法复用但不适合使用继承的情况。1)trait允许在类中复用方法,避免多重继承复杂性。2)使用trait时需注意方法冲突,可通过insteadof和as关键字解决。3)应避免过度使用trait,保持其单一职责,以优化性能和提高代码可维护性。

依赖注入容器(DIC)是一种管理和提供对象依赖关系的工具,用于PHP项目中。DIC的主要好处包括:1.解耦,使组件独立,代码易维护和测试;2.灵活性,易替换或修改依赖关系;3.可测试性,方便注入mock对象进行单元测试。

SplFixedArray在PHP中是一种固定大小的数组,适用于需要高性能和低内存使用量的场景。1)它在创建时需指定大小,避免动态调整带来的开销。2)基于C语言数组,直接操作内存,访问速度快。3)适合大规模数据处理和内存敏感环境,但需谨慎使用,因其大小固定。

PHP通过$\_FILES变量处理文件上传,确保安全性的方法包括:1.检查上传错误,2.验证文件类型和大小,3.防止文件覆盖,4.移动文件到永久存储位置。

JavaScript中处理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。1.??返回第一个非null或非undefined的操作数。2.??=将变量赋值为右操作数的值,但前提是该变量为null或undefined。这些操作符简化了代码逻辑,提高了可读性和性能。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

Dreamweaver CS6
视觉化网页开发工具