PHP 子进程的私有变量访问

2023-11-23

所以我正在尝试解决我在设计 PHP 类时遇到的问题。我创建了一个基类,并分配了私有变量。我有扩展此基类的子类,它们通过基类的函数引用和更改这些私有变量。这是一个例子,请记住我仍然对之间的区别感到困惑private and protected方法/变量(如果我做错了,请告诉我!):

基类.php

<?php
class Base {
    private $test;
    public function __construct(){
        require('sub.class.php');
        $sub = new Sub;
        echo($this->getTest());
    }
    public function getTest(){
        return $this->test;
    }
    protected function setTest($value){
        $this->test = $value;
    }
}
?>

子类.php

<?php
class Sub extends Base {
    public function __construct(){
        parent::setTest('hello!');
    }
}
?>

所以我期望结果是hello!打印在屏幕上 - 相反,什么也没有。我可能对课程有根本性的误解,或者我只是做错了什么。非常感谢任何指导!谢谢。

EDIT:

感谢每个提供答案的人 - 我认为,尽管有出色的解决方案,但子类实际上并不是我所需要的 - 似乎委托类在这一点上可能更有用,因为我真的不需要引用 Base来自其他类的函数。


应该是这样的:

基类.php:

class Base {
    private $test;
    public function __construct() {
        echo $this->getTest();
    }
    public function getTest() {
        return $this->test;
    }
    protected function setTest($value) {
        $this->test = $value;
    }
}

子类.php:

class Sub extends Base {
    public function __construct() {
        parent::setTest('hello!');  // Or, $this->setTest('hello!');
        parent::__construct();
    }
}

主要代码:

require 'base.class.php';
require 'sub.class.php';

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

PHP 子进程的私有变量访问 的相关文章

  • 简单的 PHP 条件帮助: if($Var1 = in list($List) and $Cond2) - 这可能吗?

    这是一个可能的功能吗 我需要检查一个变量是否存在于我需要检查的变量列表中 并且 cond2 是否为 true 例如 if row name 1 2 3 Cond2 doThis 它对我不起作用 我在复制粘贴中更改的只是我的列表和变量名称 i
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • 如何解压 PHP/Lumen/Laravel 的 gzip 请求?

    我收到来自第三方的 gzip 编码文本请求 1mb 所以这是有道理的 我的测试路线 router gt post testgzip function Illuminate Http Request request decompressed
  • PHP 会话不适用于游戏

    我正在尝试模仿一款名为 SKUNK 用骰子玩 的游戏来完成一项作业 我无法让会话正常工作 这是我第一次使用 PHP 我还被告知无需会议即可完成 这是我的代码
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • 将“php”作为 shell 脚本执行时的自定义 php.ini 文件

    我在跑php作为 shell 脚本 我不确定 shell脚本 是否正确 该文件以 usr bin php 这很好用 但 MongoDB 类没有正确加载php ini文件 具有extension mongo so 未使用 我该如何使用它tha
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et

随机推荐

  • 用 c 封装一个 c++ 库? (不要“外部c”)

    是否可以将 C 库包装到 C 中 我怎样才能做到这一点 有现成的工具吗 需要访问现有的 C 库 但只能使用 C 您可以用 C 语言编写面向对象的代码 因此如果它是面向对象的 C 库 则可以将其包装在 C 接口中 然而 这样做可能非常乏味 特
  • spring-security中基于路径变量的授权

    我的用例是根据 PathVariable 参数对用户进行身份验证和授权 我需要执行一些自定义代码来授权主体 我不确定这里要采取的方法 我已经实现了一个自定义的 AbstractAuthenticationProcessingFilter 和
  • 如何使用 RDD API 在分区内排序(并避免跨分区排序)?

    Hadoop MapReduce shuffle 的默认行为是对分区内的 shuffle key 进行排序 而不是跨分区 这是使键跨分区排序的总排序 我想问如何使用 Spark RDD 实现同样的事情 在分区内排序 但不跨分区排序 RDD
  • “堆内”和“堆外”的区别

    Ehcache 谈论堆内和堆外内存 有什么不同 使用哪些 JVM 参数来配置它们 堆上存储是指将出现在 Java 堆中 并且也受 GC 影响 的对象 另一方面 堆外存储是指由 EHCache 管理的 序列化 对象 但存储在堆外 并且也不受
  • 在 iPhone 中创建 pdf 缩略图

    我是 Objective c iPhone 编程新手 我有一个应用程序 可以在 UIWebView 中成功显示 PDF 但现在我想创建 PDF 的缩略图 我的 PDF 存储在我的资源文件夹中 因此 请给我如何显示 PDF 缩略图的代码 我的
  • 绘制立方体时出现OutOfMemory异常

    我有一个绘制和旋转立方体的类 每次旋转立方体时 我都会使用立方体的新值重新加载缓冲区 public void LoadBuffer GraphicsDevice graphicsDevice buffer new VertexBuffer
  • 如何使用 Android Management API + Organizations 分发私有 Android 应用测试轨道?

    因此 我使用 Android Management API 来管理和处理应用程序到我正在使用的信息亭设备的部署 我创建了一个组织 创建了一项政策 并确保该应用程序仅限于托管的 Google Play 并将该组织分配给该应用程序 我已将一些设
  • 如何查看c中优化后的代码

    我可以使用探查器检查优化情况 可执行文件的大小以及执行所需的时间 我可以得到优化的结果 但我有这些疑问 如何获得优化的 C 代码 C 使用哪种算法或方法来优化代码 提前致谢 您可以使用该选项了解优化的想法 fdump tree optimi
  • 是否可以使用 Google Chrome 作为代理服务器?

    在我的特定网络环境中 Google Chrome 可执行文件可以通过经过身份验证的传出代理服务器访问外部网站 然而 其他可执行文件 当指向该传出代理时 无法执行此操作 我现在有一个想法 使用 Chrome 本身作为其他可执行文件的本地代理
  • 在 Oracle 中为 varchar2 字段创建序列

    我想为这个 varchar 创建一个序列 如果它是一个数字而不是 varchar 那就更容易了 在那种情况下 我可以做 seq no seq no 1 但是 当我想将列中的下一个值存储为 A0000002 而前一个值是 A0000001 将
  • 避免 SSL “您将被重定向到不安全的连接。”信息

    我有一个通过 SSL 提供服务的登录屏幕 用户填写他们的登录名 密码 这将被发布到服务器 此时我想跳出 SSL 因此我将它们重定向回没有 SSL 的同一页面 这会导致浏览器显示警告对话框 您将被重定向到不安全的连接 我怎样才能避免这种情况
  • 如何在 Yii 中使用事件

    我想在 onBeginRequest 事件中运行一些代码 我该在哪里做呢 我认为我不应该将其添加到核心库代码中 我对 Yii 完全是菜鸟 如果您想使用 onBeginRequest 和 onEndRequest 您可以通过将以下几行添加到配
  • VS 2010 中出现“没有可用的编辑器”错误

    当我尝试在 VS 2010 中选择设计器视图时 出现以下错误 没有可用的编辑器 c 用户 teadrinkinggeek 文档 视觉 工作室 2010 网站 website2 About aspx 确保该文件的应用程序 类型 aspx 已安
  • 为什么 Eclipse PHP 无法识别名称空间声明?

    当我输入 namespace ORM 时在 Eclipse 中 它用红色强调 ORM 并表示它需要括号 有没有办法让 Eclipse 识别名称空间 这可能是您的项目设置为5 1 5 2版本 您可以在以下位置更改默认值 Window gt P
  • SEL 执行选择器和参数

    当您拥有的只是一个 SEL 对象时 似乎应该有一种简单的方法来调用带有一些参数的选择器 我似乎找不到正确的语法 MyClass init SEL sel owner NSObject parent int i 10 parent perfo
  • 通过 OneToOneField 删除相关对象

    在这种情况下有什么聪明的方法来执行删除吗 class Bus models Model wheel OneToOneField Wheel class Bike models Model wheel OneToOneField Wheel
  • 为什么 Java 允许大小为 0 的数组?

    java中的数组是固定长度的 那么为什么 Java 允许大小为 0 的数组呢 String strings new String 0 这表明它是空的 IE 您可以对其进行循环 就好像它有项目并且没有结果发生一样 for int k 0 k
  • 出于安全考虑,是否有类似于 jQuery 版本的终止支持之类的内容,类似于生命周期/支持版本的终止

    出于安全原因 我们需要获取 jQuery 支持的版本 是否有类似 jQuery 版本的支持终止之类的内容 类似于 PHP 中的生命周期终止 支持版本 https www php net supported versions php 出于安全
  • HTTP 路径必须以斜杠开头吗?

    我有一个关于 HTTP 格式的问题 HTTP 请求的第一行看起来像这样 GET path to resource txt HTTP 1 1 或者换句话说 METHOD URI HTTP VERSION 是否需要URI开始于 性格使得 pat
  • PHP 子进程的私有变量访问

    所以我正在尝试解决我在设计 PHP 类时遇到的问题 我创建了一个基类 并分配了私有变量 我有扩展此基类的子类 它们通过基类的函数引用和更改这些私有变量 这是一个例子 请记住我仍然对之间的区别感到困惑private and protected