PHP-Phalcon框架中的数据库操作

发表于:2016-5-05 10:28

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:露夕逝    来源:51Testing软件测试网采编

  > 本文描述了PHP-Phalcon框架中数据库操作方法,主要讨论Phalcon框架的Model组件中的操作方法。更详细的Model介绍请参考:官方文档
  1. 连接数据库
  在Phalcon框架中,通过在DI中注入db参数来实现数据库的连接和配置,基本的配置方法如下:
  use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter;
  $di->set('db', function () {
  return new DbAdapter(array(
  "host"     => "localhost",
  "username" => "root",
  "password" => "",
  "dbname"   => "test"
  ));
  });
  通过在$di中设置'db'的连接属性,包括host,username,password,dbname等属性来获取数据库参数,配置好db之后就可以利用Phalcon中的ORM框架了。
  另一种通过配置文件的方法如下:
  1.首先需要将数据信息写入配置文件,在Phalcon中支持ini, php, json等三种配置文件形式,以下为ini形式的配置文件。
  [database]
  adapter  = Mysql
  host     = localhost
  username = root
  password =
  dbname   = test
  2.利用配置文件将数据库信息写入DI
  $di->set('db', function () use ($config) {
  $config = $config->get('database')->toArray();
  $dbClass = 'Phalcon\Db\Adapter\Pdo\\' . $config['adapter'];
  unset($config['adapter']);
  return new $dbClass($config);
  });
  2. 建立数据库表
  在MySQL中建立数据库表,如下所示:
  CREATE TABLE `customer` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  以上语句建立了一个customer表,包括主键id,以及username和password两个字段。
  3. 创建模型
  根据上述数据库表,创建Customer.php模型类,需要注意的是模型类必须继承Phalcon\MVC\Model类,并且采用与数据库表名一致的驼峰命名法。因此建立如下的Customer类:
class Customer extends \Phalcon\Mvc\Model
{
//采用默认的对应规则会自动映射数据库表的字段,可以不写
/**
*
* @var integer
*/
public $id;
/**
*
* @var string
*/
public $username;
/**
*
* @var string
*/
public $password;
/**
* Returns table name mapped in the model.
*
* @return string
*/
public function getSource()
{
return 'customer';
}
}
  其实只要满足了对应的命名规则,模型类中的属性是不需要定义的,这里定义的目的是方便开发过程中查看,并且可以提高性能;此外,如果没有采用数据库表名对应的类名进行命名的话,就需要在初始化函数中通过setSource方法进行配置,配置代码:
  public function initialize()
  {
  $this->setSource("tablename");
  }
  从这里可以看出,在现代的Web开发框架中,都遵循约定大于配置(CoC)的基本原则。只要遵循约定,就可以很方便的进行Web开发。
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号