首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中,StdClass的值可以是另一个键的值吗?

在PHP中,StdClass的值可以是另一个键的值吗?
EN

Stack Overflow用户
提问于 2018-06-16 05:32:29
回答 2查看 33关注 0票数 0

我不知道该如何表达这个问题。

是否可以创建一个新的StdClass,并将一个值作为另一个键(属性)的值?

不创建类的

代码语言:javascript
复制
$myObject = (object) [
  'base_url' => 'http://www.google.com/',
  'route'    => $this->base_url . '/some/deeper/path'
];

我知道这段代码是不正确的,但是专注于替换$this只是为了让人们理解这个概念。

这有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-16 05:45:11

问题是您的数组创建是作为单个步骤完成的,并且base_url的源代码还不存在,只作为单独的操作,您需要设置为get :)

代码语言:javascript
复制
$myObject = new stdClass();
$myObject->base_url = 'http://www.google.com';
$myObject->route = $myObject->base_url . '/some/deeper/path';

编辑:你可以在你的一行中间使用一个变量赋值...

代码语言:javascript
复制
$myObject = (object) [
  'base_url' => $base_url = 'http://www.google.com/',
  'route'    => $base_url . '/some/deeper/path'
];
//unset( $base_url );

因为$base_url = 'http://www.google.com/'的操作首先发生在对象创建之前,因此需要两个步骤的过程。

票数 1
EN

Stack Overflow用户

发布于 2018-06-16 05:40:41

您可以使用神奇的__get方法创建一个动态PHP属性。例如:

代码语言:javascript
复制
<?php
class MyClass {
    public $base_url = 'http://www.google.com/';

    public function __get($name) {
        if ($name == 'route') {
            return rtrim($this->base_url,'/') . '/some/deeper/path';
        }

        throw new \Exception("Property '$name' is not set");
    }
}

stdClass上这样做,你可以子类化它。然而,无论如何,stdClass就像一个初始基类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50882918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档