PHP 将一个类的实例传递给另一个类

2023-11-23

我对 PHP OO 编程技术还是比较陌生,我有一个非常简单的广泛问题,在类中实例化一个类然后将该实例传递给另一个类通常是不好的做法吗?

我想要的是能够创建我知道在每个用户请求中始终需要的特定类的实例。第二类不仅仅是一个辅助类,理想情况下在我的应用程序中它将是一个加载视图的“加载器”。

第一个类调用其他两个类:

require 'classTwo.php';
require 'classThree.php';

class first {
     public $classTwo, $classThree;

     public function __construct() {
          $this -> classTwo = new classTwo;
          $this -> classThree = new classThree;

          $this -> classThree -> displayNum( $this -> classTwo );

     }
}

第二类是辅助类:

class classTwo {
     public function returnVal() {
          return 123;
     }
}

第三类是实际工作和最终显示发生的动作类:

class classThree {
     public function displayNum( $instance ) {
          echo $instance -> returnVal();
     }
}

总的来说,我只是想知道这是否是不好的做法,因为我以前从未见过这样做。

提前致谢!


注入任何依赖对象是一个很好的做法,因为这使您可以在单元测试期间非常轻松地进行模拟。

一般来说,如果你有ClassA它依赖于一个实例ClassB为了发挥作用,你可以做类似的事情..

$objectB = new ClassB();
$objectA = new ClassA($objectB);

看一眼http://net.tutsplus.com/tutorials/php/dependency-injection-in-php/

编辑:构造函数注入将依赖项传递到新对象的构造函数中(如上所示)。

Setter注入是使用一种方法来设置依赖关系,通常在依赖关系不重要时使用:

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

PHP 将一个类的实例传递给另一个类 的相关文章

  • 类函数/变量在使用之前是否必须声明?

    所以我在学习课程时偶然发现了一些对我来说相当尴尬的事情 class Nebla public int test printout return x void printout printout2 private int x y void p
  • 如何仅删除页面的自动段落格式,而不删除帖子的自动段落格式(WordPress)

    我已经熟悉这个在 WordPress 中删除自动段落格式的小技巧 remove filter the content wpautop remove filter the excerpt wpautop 但是添加这个函数 php删除整个网站的
  • 在laravel中组合两个不同的无关系数据库表查询进行分页

    我的数据库中有两个不相关的表 我需要将它们合并 以便我可以将其放在我的搜索视图中 但我不知道是否可能 这是我的代码 这news and season表不相关 但它们具有相似的列 我试图将其放入一个对象中以便于分页 是否可以 search r
  • 在 Laravel 中的编辑表单上获取选定选项

    我的网站订单有一个可编辑的表单 并且有以下字段 User quantity note status 我在此表单中还有其他选项 但只有这些字段对我来说很重要 以便能够获取默认值 例如 我希望能够查看用户默认订购的数量 然后我可以更改它或保留它
  • 将查询字符串附加到任何形式的 URL

    我要求用户在文本框中输入 URL 并需要向其附加查询字符串 URL 的可能值如下 http www example com http www example com http www example com a http www examp
  • 从 php 到 JavaScript 的数组

    我正在尝试使用 json 将数组列表从 php 传输到 javascript 但它不起作用 JS ajax url getProfilePhotos php type post post or get method data if you
  • 为什么需要在 Python 方法中显式使用“self”参数? [复制]

    这个问题在这里已经有答案了 当在 Python 中的类上定义方法时 它看起来像这样 class MyClass object def init self x y self x x self y y 但在其他一些语言中 例如 C 您可以使用
  • 如何在php中使用一张图像绘制形状

    我需要使用图像的一部分来创建帧图像 例如 用户将从后端上传图像片段 现在我需要根据前端用户的要求在前端创建一个框架 用户将选择框架的高度和宽度 然后他将选择该图像片段 如下所示 我没有办法做到这一点 我尝试通过 css 和 html can
  • Laravel 登录后重定向回来

    登录后如何重定向返回页面 在 Laravel 5 2 中 认证控制器 protected redirectTo 重定向用户
  • 付款成功后保存到数据库(paypal)

    我试图找出在客户使用 paypal 支付商品费用后将数据 之前以表单提交 保存到数据库的最佳方法 沿着这个过程的一些事情 1 在实际网站上填写表格 gt 2 登录 Paypal gt 3 立即付款 PayPal gt 4 数据已插入数据库
  • PHP 脚本不断执行 mmap/munmap

    我的 PHP 脚本包含一个循环 它只不过是回显和取消引用指针 如 tab othertab i gt 中的内容 直到昨天 这个脚本开始变得非常慢 比以前慢了 50 倍 之前 它一直运行良好 使用 strace 后 我发现 90 的情况下 脚
  • php oracle客户端oci8安装出现什么问题

    我尝试了安装 PHP Oracle 客户端的所有过程 1 我安装了客户端版本8和32位 2 我在php ini中取消了oci的注释 3 重新启动Wamp 4 不确定是否真的安装 但我在 php ini 中得到了引用 5 但仍然无法连接 泰汉
  • 当我使用 session_start() 时,Xampp 7.0.1 Apache 崩溃

    当我在 PHP 中使用 session start 启动会话时 我的 Apache 服务器停止工作 我正在使用 Windows 版 Xampp 7 0 1 我的配置文件如下所示 即使我把它放在文件的第一行 它也不起作用 有人知道如何解决这个
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • ACL授权失败后ZF3重定向

    我有一个带有 ACL 的新 ZF3 应用程序 现在 我需要在未经授权的访问的情况下重定向到错误页面 例如 403 我认为最好的方法是触发一个事件 然后捕获它 但我失败了 全部都在我的用户模块中Module php 摘录 namespace
  • PHP LDAP 查询获取特定安全组的成员

    我正在努力让 LDAP 查询工作来为我提供安全组的成员 我们的活动目录结构设置为 DC domain DC co dc uk然后 我们有一个名为 公司用户 的 OU 其中有一个用于 IT 和标准的 OU 在这些中我们创建了用户 所以我被设置
  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • 为什么这评估为 true

    为什么这评估结果为真
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib

随机推荐

  • 检查 Python 字典列表中是否已存在值?

    我有一个 Python 字典列表 如下所示 a main color red second color blue main color yellow second color green main color yellow second c
  • 没有名为“tensorflow.keras.layers.experimental.preprocessing”的模块

    代码下面 import numpy as np np random seed 0 from sklearn import datasets import matplotlib pyplot as plt matplotlib inline
  • 位域,为什么要特定于实现?

    C C 位域似乎在硬件驱动程序和二进制网络传输中有很多应用 然而 它们似乎没有被广泛使用 并且通常不被鼓励 因为实际的二进制布局是特定于实现的 如 C99 标准 6 7 2 1 10 结构和联合说明符 中的引用所示 实现可以分配足够大的任何
  • removefromsuperview是否释放scrollview的对象?

    for UIView subview in scrollView subviews NSLog subviews Count d scrollView subviews count subview release subview remov
  • 如何让图标出现在新窗口中?

    我正在打开一个新窗口 向其中注入正文和头部的 HTML 问题出在标题部分 HTML 包含标题和图标 但图标不显示 这是代码和 jsFiddle https jsfiddle net ufnjspgc function Start TheBu
  • 如何告诉 LLDB 将信号传递给程序

    我在 lldb 中为安装在 MacOS 上的基于 C 语言的应用程序设置了很多断点 断点大多设置在应用程序的同一函数中 然而 第二天我回到应用程序继续处理它 并开始在同一个函数中再次设置断点 出现了一个问题 断点不是发生在应用程序函数内部
  • React Native:如何在 Android 和 iOS 中打开操作系统设置?

    我正在开发一个mobile应用程序使用反应本机我想在其中打开移动设备的settings当用户clicks在特定按钮上 我已经经历了docsRN 但仍然找不到任何可以帮助我实现同样目标的东西 有人可以吗guide我也一样 请问如何实施 谢谢
  • java 当鼠标点击时画一个圆

    我正在编写一个程序 当单击鼠标时 将绘制一个圆圈 以下是我到目前为止编写的代码 import java awt import javax swing import java awt event ActionEvent import java
  • 多模块项目中的 Maven 测试依赖关系

    我使用 Maven 构建一个多模块项目 我的模块 2 依赖于编译范围内的模块 1 src 以及测试范围内的模块 1 测试 模块 2
  • android studio logcat 删除日期、进程信息

    最近一次 Android Studio 更新后 目前我运行的是 3 1 2 logcat 开始间歇性地删除时间戳和 PID 信息 05 01 13 26 03 962 12909 12909 com perinote perinote D
  • 为什么“summarize”会删除一个组?

    我在胡闹babynames pkg A group by命令有效 但之后summarize 其中一个组将从组列表中删除 library babynames babynames 1 10000 gt group by year name gt
  • D3.js线性回归

    我搜索了一些有关构建线性回归的帮助 并在这里找到了一些示例 非线性回归函数还有一些应该涵盖这一点的 js 库 但不幸的是我无法使它们正常工作 简单统计 js和这个 回归 js With regression js我能够得到m and b线的
  • Android:注册意图过滤器以使用我的应用程序打开电子邮件附件

    我有一个可以生成自定义文件类型 sor 的应用程序 在应用程序内部 我有一个功能可以发送附有这些文件之一的电子邮件 我还有一个意图过滤器 允许应用程序显示在可以打开此类文件的应用程序列表中 这使我 有时 可以直接从手机上的用户电子邮件客户端
  • 强类型数据集与弱类型数据集

    Net 中的强类型数据集是什么意思 有人可以用一个清晰 而简短的例子来解释吗 另外 强类型数据集和弱类型数据集之间有什么区别 强类型数据集基于 Db Schema 生成 它们由从 DataSet DataTable 和 DataRow 派生
  • Django TestCase 不使用辅助数据库上的事务

    我正在使用 Django 1 3 1 我有两个数据库 我的一些模型位于一个数据库中 一些模型位于另一个数据库中 这两个数据库都是 contrib gis db backends postgis 数据库 令我惊讶的是 Django 的 Tes
  • GWT:如何避免在生成的JavaScript代码中调用dynamicCast和canCastUnsafe?

    我正在用 Java 编写一些特殊用途的数据结构 旨在在浏览器中使用 使用 GWT 编译为 JavaScript 我正在尝试匹配一些内置 JDK 类的性能 我注意到运行速度相当快 但是当我将我的代码跟踪与一些模拟的 JDK 代码进行比较时 我
  • 使用 HTML/JavaScript 检测本地文件拖放

    有一个 HTML 文本区域 我能够在以下情况下捕获该事件 本地文件被拖放到文本区域上 但如何获取删除的文件名 最后修改并插入到文本区域中 在这种情况下 以下表达式返回 None event dataTransfer files event
  • 如何使用 Access/VBA 复制到剪贴板?

    在 Access 2003 2007 中使用 VBA 如何将字符串变量的内容复制到剪贴板 这个网站建议创建一个零长度的文本框 将字符串复制到文本框 然后运行DoCmd RunCommand acCmdCopy 啊 我的意思是 我们可以沿着这
  • C# 中是否可以合并 string 和 DBNull?

    我正在编写一个 C 例程来调用存储过程 在我传入的参数列表中 其中一个值可能合法地为空 所以我想我会使用这样的行 cmd Parameters Add new SqlParameter theParam theParam DBNull Va
  • PHP 将一个类的实例传递给另一个类

    我对 PHP OO 编程技术还是比较陌生 我有一个非常简单的广泛问题 在类中实例化一个类然后将该实例传递给另一个类通常是不好的做法吗 我想要的是能够创建我知道在每个用户请求中始终需要的特定类的实例 第二类不仅仅是一个辅助类 理想情况下在我的