php类使用数据类的实例教程

在这一节中,我们将杀害二鸟一石。不仅我们将学习如何将面向对象的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().'<br />';
}

/* 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().'<br />';
}

时间: 2024-10-29 00:37:46

php类使用数据类的实例教程的相关文章

MySQL数据导入导出实例教程手册

mysqldump是mysql自带的一个数据导入导出工具,其官方注释为: shell> mysqldump [options] db_name [tbl_name ...] shell> mysqldump [options] –databases db_name - shell> mysqldump [options] –all-databases 使用mysqldump命令将整个数据库导出  代码如下 复制代码 mysqldump -h 127.0.0.1 -P 3306 -u ro

分享js与mvc数据的交互实例教程

在做考试系统中,遇到最头疼的问题,就是前台与后台的交互.对于使用easyui来说,刚接触不久,有点陌生. 查着文档,看着Demo.做起来着实有点头疼. 首先,前台使用的是MVC+Easyui,后台使用的WCF提供服务.那么前台的数据,是如何与后台进行交互的呢? 页面上的所有事件都是通过js来调用的.那么就必须是 js里面写事件,然后把前台的数据,传到Controller里面,然后利用Controller去调用后台提供的WCF服务. JS向后台提交数据方法: 利用js向后台提供数据.无非两种方法,

Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation 数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation 服务器端异步数据验证 Silverlight

Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation服务器端异步数据验证 Silverlight实例

Silverlight实例教程 Datagrid,Dataform数据验证和ValidationSummary

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation服务器端异步数据验证 Silverlight实例

Silverlight实例教程 - Validation用户提交数据验证捕获

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation服务器端异步数据验证 Silverlight实例

Silverlight实例教程 - Validation数据验证开篇

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation 数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation 服务器端异步数据验证 Silverlight

Silverlight实例教程 - Validation服务器端异步数据验证

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation服务器端异步数据验证 Silverlight实例

Silverlight实例教程 - Validation客户端同步数据验证

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation服务器端异步数据验证 Silverlight实例