首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从模型中获取Zend\Db\Adapter实例?(ZF2)

这个问题是在询问如何从模型中获取 Zend\Db\Adapter 实例。在 Zend Framework 2 中,可以使用 Zend\Db\Adapter\AdapterInterface 接口来连接数据库。以下是一些获取 Zend\Db\Adapter 实例的方法:

  1. 通过 Service Manager 获取 Zend\Db\Adapter 实例

在 Service Manager 中注册 Zend\Db\Adapter\AdapterInterface 接口,然后可以使用 getServiceConfig() 方法获取 AdapterInterface 服务的配置,最后使用 getAdapter() 方法获取 Zend\Db\Adapter 实例。

代码语言:php
复制
// Module.php
public function getServiceConfig()
{
    return array(
        'factories' => array(
            'Zend\Db\Adapter\AdapterInterface' => function($sm) {
                $adapter = new Adapter($sm);
                $adapter->setDbTableGateway($sm->get('Zend\Db\Adapter\DbTableGateway'));
                return $adapter;
            },
        ),
    );
}
  1. 通过构造函数获取 Zend\Db\Adapter 实例

在 Model 中通过构造函数来实例化 Zend\Db\Adapter\AdapterInterface 接口,然后使用它的方法来获取 Zend\Db\Adapter 实例。

代码语言:php
复制
// Model.php
public function __construct(Adapter $adapter)
{
    $this->adapter = $adapter;
}
  1. 通过 Service Manager 获取 Zend\Db\Adapter\Platform\Sqlserver 实例

在 Service Manager 中注册 Zend\Db\Adapter\Platform\Sqlserver 接口,然后可以使用 getServiceConfig() 方法获取 Platform\Sqlserver 服务的配置,最后使用 getAdapter() 方法获取 Zend\Db\Adapter\Platform\Sqlserver 实例。

代码语言:php
复制
// Module.php
public function getServiceConfig()
{
    return array(
        'factories' => array(
            'Zend\Db\Adapter\Platform\Sqlserver' => function($sm) {
                $adapter = new Platform\Sqlserver($sm);
                $adapter->setDbTableGateway($sm->get('Zend\Db\Adapter\DbTableGateway'));
                return $adapter;
            },
        ),
    );
}

以上是一些获取 Zend\Db\Adapter 实例的方法,可以根据需要选择适合自己的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Zend FrameWork之Zend_Db_Table笔记

根据Zend_Db_Table操作数据(也就是在models建立一个对应表的模型) 准备条件: course数据表中有cid课程号,自增,主键,cname课程名称,ccredit课程学分 在models...建立Course.php编写Course类继承Zend_Db_Table 写表$_name=’course’;表主键$_primary=’cid’; 1.插入记录操作 要在表插入一行新数据,只需要将列名...(zend framework)会自动对数据进行加引号处理, 并返回插入的最后一行的id值(注意:这里不同于 zend_db_adapter::insert方法,后者返回的是插入的行数)...., 2); $cModel->delete($where); 4.查找数据操作 通过调用find()方法,可以使用主键值轻松地在表检索数据.假如你只想要查询某 一条数据,该方法将回返回一个zend_db_table_row...> (PS:Zend_Db_Table连接数据还是使用的Adapter,明天再看吧~~下班了)

1.2K30
  • PHP Opcache工作原理

    1.1 PHP-FPM + Nginx 的工作机制 请求Web浏览器到Nginx,再到PHP处理完成,一共要经历如下五个步骤: 第一步:启动服务 启动PHP-FPM。...filter → 第二个 → 以此类推 → 最终响应发送给客户端 1.2 PHP脚本解释执行的机制 了解了PHP + Nginx 整体的处理流程后,我们接下来看一下PHP脚本具体执行流程, 首先我们看一个实例...但是,像Zend Framework等框架,会引用注释,所以,是否关闭注释的缓存,需要区别对待。 5. OPCache 更新策略 是缓存,都存在过期,以及更新策略等。...如何避免呢?...; 允许或禁止在 include_path 中进行文件搜索的优化 ;opcache.revalidate_path=0 ; 是否保存文件/函数的注释 如果apigen、Doctrine、 ZF2

    1.5K21

    GO 权限管理之 Casbin

    GO 权限管理之 Casbin 我们来回顾一下上次分享的 GO gjson 库的应用和分享,它主要是提供了一种非常快速且简单的方式json文档获取相应值 分享了 json与 gjson分别代表什么...gjson 的简单使用 gjson 校验,获取值 gjson的 json 行 gjson的键路径匹配规则 gjson的修饰符和自定义修饰符 要是对 gjson还有点兴趣的话,可以查看文章 GOgjson...hello*模式 不支持身份验证 不支持管理用户或角色列表 咱们看一下 Casbin 的基本模型 在 Casbin 库,他是基于PERM元模型将访问控制模型抽象为CONF文件,有如下4个部分 策略.../rbac_models.conf", a) //DB load 策略 e.LoadPolicy() //new 一个路由 r := gin.New() r.POST...分享了权限管理是什么 Casbin 是什么 Casbin 的特性 Casbin 的应用案例 欢迎点赞,关注,收藏 朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力 好了,本次就到这里,下一次 工作后端是如何

    61820

    基于 PHPStorm 编辑器的 Laravel 开发

    引言 本文主要讲述在PHPStorm编辑器如何使用PHPStorm的Laravel插件和Laravel IDE Helper来开发Laravel程序,结合个人积累的一点经验来说明使用PHPStorm编辑器来开发程序还是很顺手的...,然后点击 getcomposer.org网上下载,PHPStorm会自动下载 composer.phar文件,并在项目根目录下生成 composer.json文件,速度也很快: ? ?...OPcache zip zlib [Zend Modules] Xdebug Zend OPcache 如果没有装Xdebug扩展的话需要装一下,装完后修改下php.ini把xdebug.so前的路径.../vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListener.php"> </listeners...经常遇到这样的一个情景:数据库装在数据库服务器db.test.com,但本地是登陆不上去的,但 在开发服务器host.company.com是可以链接数据库服务器的,那如何使用database来连接数据库服务器呢

    3.7K80

    是否需要使用依赖注入容器?

    Web 项目的角度出发,结合实例讲解了「依赖注入」的具体实现。...我非常感谢 Zend 框架组件,事实上,Symfony 框架使用了许多 Zend 框架的组件。...值得庆幸的是,使用 Zend 的邮件组件通过设置发送对象来修改邮件发送行为非常容易。如何使用 Gmail 帐号作为发送者创建 Zend_Mail 实例并发送一封邮件: <?...那么把这个例子当作由容器管理的众多实例集合的一个部分就可以了。 「依赖注入容器」是一个知道如何实例化和配置依赖组件的对象。...', )); $mailer = $container->getMailer(); 最后,一些优化,每次我想要获取一个邮件发送器实例 $mailer ,都需要创建一个新的实例

    2.2K20

    提示 Data Binding 库使用的经验教训

    幸运的是,『DB 库』为我们提供了一个手工方式去在 binding adapter 接收状态。通过提供参数两次:第一个参数接收当前值,第二个参数接收新值。...当任何被依赖的变量发生变化,『DB 库』都会运行你的 binding 表达式(接着会更新 view)。这个变化检测就是你可以免费获取的很棒的优化。...所以回到我的场景,我的布局最终看起来是这样的: 所以我最终获取一个包含所有 UI 状态的全局 ViewState 实例,并且你可以想象出这些状态经常会发生变化。...有种替代方法是在布局显式声明 ViewState 的每个变量,然后显式传递组合状态实例的值,如下所示: 这显然会使开发人员维护和同步更多的代码,但它确实意味着『DB 库』可以优化去运行哪些表达式。...所以如果你的 UI 也有大量的 RecyclerView 组成,你可以类似上文描述不费事地获取计算这方面的优化。 小步迭代 希望这篇文章强调了一些可以优化数据绑定实现方案的一些小事。

    68920

    Data Binding 库使用的经验教训

    幸运的是,『DB 库』为我们提供了一个手工方式去在 binding adapter 接收状态。通过提供参数两次:第一个参数接收当前值,第二个参数接收新值。...当任何被依赖的变量发生变化,『DB 库』都会运行你的 binding 表达式(接着会更新 view)。这个变化检测就是你可以免费获取的很棒的优化。...所以回到我的场景,我的布局最终看起来是这样的: 所以我最终获取一个包含所有 UI 状态的全局 ViewState 实例,并且你可以想象出这些状态经常会发生变化。...有种替代方法是在布局显式声明 ViewState 的每个变量,然后显式传递组合状态实例的值,如下所示: 这显然会使开发人员维护和同步更多的代码,但它确实意味着『DB 库』可以优化去运行哪些表达式。...所以如果你的 UI 也有大量的 RecyclerView 组成,你可以类似上文描述不费事地获取计算这方面的优化。 小步迭代 希望这篇文章强调了一些可以优化数据绑定实现方案的一些小事。

    42020

    Thinkphp5框架实现获取数据库数据到视图的方法

    本文实例讲述了Thinkphp5框架实现获取数据库数据到视图的方法。分享给大家供大家参考,具体如下: 这是学习thinkhp5的基础篇笔记。...数据库读写是否分离 主从式有效 'rw_separate' = false, // 读写分离后 主服务器数量 'master_num' = 1, // 指定服务器序号...tp5操作数据库可以有2种方法,具体又分3种方法,两种是使用Db类和继承数据库模型;三种是Db下可以使用tp的查询也可以使用原生的查询。...需要注意的是,find和select是查询构造器的方法,get和all是模型的方法。但模型又是基于查询构造器的,所以模型可以调用find和select方法,但是查询构造器不能调用get和all方法。...相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend

    1.2K10

    tp5.1 框架join方法用法实例分析

    本文实例讲述了tp5.1 框架join方法用法。分享给大家供大家参考,具体如下: JOIN方法用于根据两个或多个表的列之间的关系,从这些表查询数据。...INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表没有匹配,也左表返回所有的行 RIGHT JOIN: 即使左表没有匹配...,也右表返回所有的行 FULL JOIN: 只要其中一个表存在匹配,就返回行 说明 join ( mixed join [, mixed $condition = null [, string $type...返回值 模型对象 举例 Db::table('think_artist') - alias('a') - join('work w','a.id = w.artist_id') - join('card...相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend

    1.4K20

    Android Studio如何获取SQLite数据并显示到ListView上

    我们在使用ListView的时候需要和数据进行绑定,那么问题来了,如何获取SQLite数据库的数据并动态的显示到ListView当中呢?...一 获取SQLite数据库的数据 SQLite是一个轻量级的数据库,它能将数据保存到你的手机,但缺点是一旦软件卸载所有数据将一同被销毁。所以要根据自己的项目需要选择性的使用。...db = helper.getWritableDatabase(); Cursor c = db.query("表名", null, null, null, null, null, null)...–得到的,如果我们想要把数据库获得的Bitmap类型的图片显示到ListView中就要自己实现ViewBinder()这个接口,在里面定义数据和视图的匹配关系 。...总结 到此这篇关于Android Studio如何获取SQLite数据并显示到ListView上的文章就介绍到这了,更多相关android studio SQLite数据ListView内容请搜索ZaLou.Cn

    3.9K20

    Skywalking Php二:代码分析

    前面我们介绍了Skywalking php如何安装的,这篇文章我们来分析Skywalking php是如何实现拦截的。 ?...= sky_execute_internal; PHP函数分2种,一个是用户态函数,即.php文件的函数,这些是通过zend_execute_ex来执行;另一种就是内部函数,即PHP扩展编写的函数,...old_function->internal_function.handler = sky_curl_exec_handler; } 这里只讲一个函数:curl_exec,先查找函数表这函数...因为其它的一些类是在PHP脚本,在模块加载的时候可能还没加载进来,所有不能静态拦截,只好进行动态拦截,每次执行一个函数时判断是不是我们关心的函数。...四、动手写代码 官方版本的skywalking是有拦截mysql和redis的功能的,但一些参数没有记录,像get命令执行的时候是获取哪个key,mysql执行哪条语句; 我们在开源的基础上做了一些定制

    87120

    Symfony 服务容器入门

    现在,是时候该去探索 Symfony 2 服务容器是如何实现这个主题了。 Symfony 的「依赖注入容器」定义的类名为「sfServiceContainer」。...(译注: @todo) 在 Symfony ,任何服务的实例都有容器管理。...前一篇文章中提到的 Zend_Mail 实例,就需要使用到两个服务:mailer 服务和 mail_transport 服务。 <?...稍后会讲解如何从容器获取相关服务。 容器可以像数组一样直接获取参数值($this['mailer.class'])。 一个服务标识符必须唯一,并且仅可以包含字母、数字、下划线和 .(英文点号)。....号在容器内的功能类似于「命名空间」(如 mail.mailer 和 mail.transport 实例)。 接下来是如何使用新的容器类: <?

    3.3K10

    LAMP的搭建与MariaDB的基础使用

    :层次模型、网状结构、关系模型 关系模型: 二维关系:row, column 数据库管理系统:DBMS 关系:Relational,RDBMS DB DBMS DBA DBS 概念 DB、DBMS、...说明:在任何一个关系数据库,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型突破了1NF的限制,这种称为非1NF的关系模型。...第二范式(2NF)要求数据库表的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。 第二范式(2NF)要求实体的属性完全依赖于主关键字。...数据抽象: 物理层:决定数据的存储格式,即RDBMS在磁盘上如何组织文件; 逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系; 视图层:描述DB的部分数据; 安装MySQL...ON db_name.tb_name FROM 'user'@'host'; 注意:MariaDB服务进程启动时会读取mysql库的所有授权表至内存; (1) GRANT或REVOKE等执行权限操作会保存于表

    2.3K10

    android学习笔记----ListView和各种适配器简介

    super.setAdapter(adapter); ...... } 首先我们通过打印log可以知道这个parent就是ListView实例,那么再通过源码来找找看,...所以 ArrayAdapter 知道如何将该数据传输或调整到列表项视图中,并在 ListView 显示。...并且知道如何将每项呈现为视图,与此同时 ListView 负责在屏幕上显示这些视图,检测用户的触摸手势,并跟踪用户是否位于整个列表。  ...意思就是从一个list集合(装的map集合)获取数据,from要输入键和值,to就是给出到底哪个textview显示键,哪个textview显示值,给出textview的id就可以了。...这样所有控件的实例都换存在了ViewHolder里,就没必要每次都通过findViewById()方法来获取控件实例了。

    2.2K10

    Android6.0源码分析之蓝牙显示接收到的文件

    ,就会去重用该实例,并且会清除掉该实例上方的所有activity,简单举个例子,如果在栈1存在有三个实例,Acivity1,Activity2,Activity3。...可以看到处于栈顶的是Activity3,也就是目前显示的是窗口3,如果窗口3跳转到窗口2,则会销毁Activity3,并且重用Activity2,也就是说目前栈Activity存在情况如下Activity1...可以看出来通过调用managedQuery方法按指定的条件查询指定的uri,获取到cursor后传给adapter,并将adapter与listview绑定显示数据。... BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); //获取到索引 int destinationColumnId...如何进行保存?会保存哪些信息?有哪些列?

    1.5K60
    领券