使用PHP PDO的数据库抽象类设计

2023-12-06

我正在设计一个网络应用程序(实际上,这是一种爱好,我正在尝试自学设计,还有什么比这样做更好的方法:)。无论如何,我正在考虑如何处理我的数据库。我很满意PDO,我正在考虑在我的抽象类中利用 PDO。我正在考虑创建一个单例,以便只有一个数据库连接。该单例将创建一个 PDO 连接。

在那之后,我不明白为什么我需要做太多其他事情。然后我可以使用数据库处理程序来调用 PDO 函数。我可能需要一些辅助函数,但当真正做到这一点时,我只会使用 PDO 来执行实际的 SQL 查询。

这种做法有什么问题吗?与我使用过的抽象类相比,它似乎过于简单。


你不需要单例。

数据库单例无法解决任何并发问题。如果有的话,它可以确保您只有一个 PDO 实例对于它创建于的请求。而且它提供了全球访问权限,许多人认为这是一件坏事。此外测试单例时你必须付出一些额外的努力.

Just 创建一个延迟连接并存储实例的包装器当您的引导程序需要时,并将实例设置为您的DAL 超型,例如表数据网关。此外,这样您就不会限制自己只能使用一个 PDO 实例,以防万一您在某个时候需要第二个 PDO 实例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用PHP PDO的数据库抽象类设计 的相关文章

  • 使用 php 获取当前月份的最后 3 个月

    我想获取当前月份最近 3 个月的名称 例如当前月份是八月 所以 我想要六月 七月 八月这样的数据 我已经尝试过这段代码echo date F strtotime 3 months 它只返回六月 如何使用 php 获取当前月份的最后 3 个月
  • facebook php - 如何获取专辑封面照片

    我需要使用 PHP SDK Facebook 获取专辑封面照片 我尝试 https graph facebook com ALBUM ID picture type album 但我得到默认图像 例如 获取用户 https graph fa
  • SMTP 配置在生产中不起作用

    我正在尝试在提交表单时发送电子邮件 我正在使用 PHPMailer 使用以下配置发送邮件 mail new PHPMailer mail gt isSMTP mail gt Host mail example in mail gt Port
  • 从 octobercms 中的非 ajax 表单获取输入值

    我正在尝试构建一个简单的搜索功能 下面是我的搜索表格
  • Yii2 异常:ApcCache 需要加载 PHP apc 扩展

    在高级模板前端的主配置中配置缓存组件时 我收到异常 在我的 php ini 上启用了扩展 rsults 如何解决此问题 前端 config main php cache gt class gt yii caching ApcCache ke
  • 如何只获取父类对象的属性

    我有两节课 class Parent object def init self id name self id id self name name self parent vars id name make a copy def print
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 使用 php 在多维数组中按键排序[重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 中对多维数组进行排序 https stackoverflow com questions 2059255 sorting multidimensional array in php 如何在
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g
  • 使用先前的反向引用作为命名捕获组的名称

    有没有办法使用对先前捕获组的反向引用作为捕获组的名称命名捕获组 这可能不可能 如果不可能 那么这就是一个有效的答案 下列 data description some description preg match data matches p
  • 如何解码 eval( gzinflate( base64_decode(

    我已将此代码注入到我的网站中 如何解码尾随字符串 我需要知道发生了什么以及其背后的代码是什么 这应该输出将被执行的代码eval 我希望这就是您正在寻找的
  • Magento - 检查 cms 页面

    我想通过 php 检查页面是否是 Magento 中的 cms page 我需要不同的 cms 页面面包屑 所以我尝试在一个条件下做到这一点 但我不知道如何或在哪里查看 到目前为止 这是我的 breadcrumbs phtml p some
  • PHP Solr PECL 扩展安装

    我已经使用命令安装了 pecl solr pecl install solr 和梨使用 wget http pear php net go pear phar php go pear phar 重启Apache后 我仍然收到错误 Fatal
  • Laravel 5 中的自定义验证器

    我正在将 Laravel 应用程序从 4 升级到 5 但是 我有一个自定义验证器 但无法运行 在L4中 我做了一个验证器 php文件并将其包含在全局 php using require app path validators php 我尝试
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • 如何在 OS X 上使用 OpenSSL 1.0.1 编译 PHP 5.5.19

    我已经安装了 OpenSSL 1 0 1j usr local ssl现在我尝试使用此版本的 OpenSSL 编译 PHP 5 5 19 这是我的配置过程 export CFLAGS arch x86 64 export CXXFLAGS
  • 检查条件并通过 Zend 中的 Regex 识别 url 中的模式

    我正在实现 Zend Regex 路由 并且必须对 url 执行多次检查 例如 如果这是我的网址 http localhost application public index php module controller action 这是
  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正
  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入

随机推荐

  • 为什么 Canvas API 在循环中使用错误的颜色填充这些路径的部分内容?

    我创建了一个JSFiddle所有代码均处于活动状态并正在运行 相关JS在这里 const canvas document getElementById base const ctx canvas getContext 2d const cW
  • Lambda 未加载加密共享库

    我正在使用 AWS Lambda 中的加密库 我已在 Amazon Linux VM 中使用 pip 编译了该包 我已将包作为图层上传 不管怎样 每次我调用库时 我都会遇到一个根本不具有描述性的错误 Unable to import mod
  • 如何在Python PyQt5中将变量分配给工作线程?

    我使用pyqt5设计了一个GUI程序 我有一个主线程和一个工作线程 当 GUI 启动时 我会从用户那里获得一些输入 例如年龄 姓名 并且我想在工作人员中处理这些输入 例如我如何发送我使用的输入self ui firstname text 给
  • Silverlight:从 silverlight 控件创建图像

    是否可以从 silverlight 控件生成图像 以便该控件将自身及其内容渲染到图像中 以便我可以对图像进行相同的像素操作 在 Silverlight 2 中无法实现此目的 我见过人们通过将 XAML 发布到服务器来解决此限制 该服务器将使
  • 如何在 C# 中反序列化包含可变数量对象的 json 对象并将它们作为键值集合?

    如何反序列化以下 JSON 对象并获取 Dictionary 的集合 其中键 字符串 应该是方法名称 对象是 C 中的详细信息 methods password 2 title Password CustomerID type passwo
  • 使用 iText 将标题添加到 pdf

    如何使用 iText 5 0 5 将页眉添加到每个 PDF 页面 这涵盖在 iText 实践 第二版第 5 章 代码示例均可在线免费获取 尤其电影国家1 and 电影史2两者都处理page页眉和页脚 归结为使用PdfPageEvent实现
  • 拼写错误:找不到合适的拼写检查程序

    虽然功能aspell标配utils包 它似乎不适合我 我不断收到同样的错误 aspell love Error in aspell love No suitable spell checker program found 有什么想法吗 gt
  • 使用 GAS AT&T 指令计算引导扇区的填充长度?

    所以我想在引导扇区添加填充 比方说 目前只有一个无限循环 jmp 该扇区的长度需要为 512 字节 还有 神奇的数字0xaa55需要在最后添加 jmp skip 508 0 word 0xaa55 但是 如果我想打印一些内容 但不想计算所有
  • 如何在iOS Reachability中检测网络信号强度

    我正在 iOS 中创建一个新的旅行应用程序 该应用程序高度依赖于地图 并且将包含两个地图 当用户有较强的网络信号时 我的第一个地图将起作用 Apple 地图 我的第二张地图将在没有任何网络或信号非常低时使用 离线 地图框 为什么一个应用程序
  • 处理上传的文本文件后在 Google 云端硬盘中创建新文档

    我成功地将文本文件上传到谷歌云端硬盘 并且编写了一种方法 可以成功地将文本翻译为猪拉丁语 现在我尝试在 Google Drive 中创建一个新文档来输出翻译后的文本 但是 我总是收到消息 发生错误 当我检查我的云端硬盘时 我只有原始上传的文
  • AccountManager:如何让用户使用对话框选择帐户

    在 AccountManager 教程中记住您的用户 建议 如果有多个Account在数组中 你应该呈现一个 对话框要求用户选择一个 最好的方法是什么 我心中有一个解决方案 但如果社区中有其他好的示例 那么这似乎是一种可以由其他人共享和轻松
  • 为什么 Android Studio 3.0.0 在 APK 上设置 FLAG_TEST_ONLY?

    我已经通过 3 0 0 rcX 来自 Canary 渠道 到达 Android Studio 3 0 0 来自稳定渠道 当我启动一个全新的应用程序并构建它时 以下代码 应用程序内部 显示设置了 FLAG TEST ONLY 标志 Log e
  • Python 中 Pivot 和 Transpose 的组合

    我正在做一些文本分析 并且有一个看起来像这样的数据 TABLE 1 C1 C2 C3 A1 TEXT1 ANOTHER TEXT1 A2 TEXT1 ANOTHER TEXT1 B1 TEXT2 ANOTHER TEXT1 B2 TEXT2
  • 从多个 csv 文件中删除标题

    我有多个csv每天来自不同服务器的文件 这些文件很大 超过 200 MB 我必须删除所有这些的标题csv文件 并使用批处理文件将它们替换为所需的列标题 下面的代码可以很好地仅从一个文件中删除列标题 echo off set csv mycs
  • 获取经过的时间跨度的年、月、日 (DateTime)

    如何将日期时间选择器值中的年龄显示为年 月 日 例如 Datetimepicker value 1 11 2014 Today 1 12 2015 最终结果将是 1 年 0 个月 1 天 S 但得到这个结果不仅仅是减去DateTime Ye
  • void() 表达式的目的是什么?

    您不能声明void多变的 void fn void a ill formed 但这编译 void fn void a void object 什么是void 意思是 它有什么用 为什么是void a 格式不正确 同时void OK void
  • 从 ng-click 获取原始元素

    我的视图中有一个项目列表ng click附在他们身上 ul li img src team logoSmall alt title li ul 我正在处理点击事件foo在我的指令中起作用 传递 event作为对已单击对象的引用 但我得到了对
  • 参数数量无效:绑定变量的数量与令牌的数量不匹配 - php 错误

    运行以下代码时 我基本上收到以下错误 无法运行查询 SQLSTATE HY093 参数数量无效 绑定变量的数量与令牌数量不匹配 我是 php 新手 不确定为什么会收到此错误 我过去曾将这段代码用于 INSERT 而不是 UPDATE 语句
  • 如何垂直对齐 HTML 中的元素

    我有一个按钮 旁边有一些文字 就像这样 Button Text 我想让文本与按钮的中心垂直对齐 我应该如何在 CSS 中做到这一点 这是我的尝试 http jsbin com oduma4 4 我发现这种方法有两个问题 文本在 IE 6 中
  • 使用PHP PDO的数据库抽象类设计

    我正在设计一个网络应用程序 实际上 这是一种爱好 我正在尝试自学设计 还有什么比这样做更好的方法 无论如何 我正在考虑如何处理我的数据库 我很满意PDO 我正在考虑在我的抽象类中利用 PDO 我正在考虑创建一个单例 以便只有一个数据库连接