【问题标题】:PHP create object inside it's own constructorPHP 在它自己的构造函数中创建对象
【发布时间】:2013-12-21 20:46:06
【问题描述】:

编辑:链接到我的第一个问题。可能会澄清一些事情。 PHP Get corresponding data, with default and error handling

我有一个检查 GET 语句是否存在的函数。如果是这样,它将值传递给另一个函数,然后根据 GET 语句的值选择一个类。

解释: 网址 = 页面=联系方式
GetFormVariable 批准了它,并且选择了 Contact 类,它将返回一个字符串。此字符串用作对象“内容”,正如它所说,它创建页面的内容。

public function getFormVariable($value){

    switch (strtoupper($_SERVER['REQUEST_METHOD'])) {
        case 'GET':
            if (isset($_GET[$value]) && $_GET[$value] != NULL) {
                return $_GET[$value];
            }
            else{
                return false;
            }
            break;
            case 'POST':
                if (isset($POST[$value]) && $POST[$value] != NULL) {
                return $POST[$value];
            }
            else{
                    return false;
            }
                break;

        default:
            return false;

    }
}

现在是问题。 当 url 中没有 GET 语句时。 GetFormVariable 返回 false。这意味着没有显示任何内容。

我如何给这个构造函数。

public function SetProperty ($prob, $val){
    $this->$prob = $val;
}

创建 ContentHome 的信息。
SetProperty('Content', 'ContentHome');

很抱歉解释的不好,如果有什么不清楚的地方请告诉我。

【问题讨论】:

  • 使用默认值?
  • @gontrollez 我不确定你的意思?
  • on this page of the PHP manual 有一个栏目名为Default argument values
  • 我确实明白了你的问题,主要是因为我今天阅读了你之前的两个问题。也许你应该提供一个链接到最后一个。你可能不知道的一件事:一个 POST 请求可能有 GET 变量和 POST 变量(而一个 GET 请求只能有 GET 变量)。
  • @Calimero 你又来了 :) 谢谢你帮助我,但你做的太多了。我真的很感谢你一直在帮助我。但我不能一直敲你的门寻求帮助。

标签: php object constructor get


【解决方案1】:

我建议我们关闭此问题,因为您不清楚您要问什么,但还是决定对提供的代码示例提供一些帮助...

你可以显着地把它去掉,因为没有上下文,函数也可以是static

static public function getFormVariable($value)
{
    if($_SERVER['REQUEST_METHOD'] == 'GET' &&
       isset($_GET[$value])                &&
       !empty($_GET[$value]))
        return $_GET[$value];

    elseif($_SERVER['REQUEST_METHOD'] == 'POST' &&
           isset($POST[$value])                 &&
           !empty($POST[$value]))
        return $POST[$value];

    return false;
}

您原来的 isset!= NULL 检查正在执行相同的检查。也许您希望将 empty() 检查作为第三次检查,但要确定 look it up

【讨论】:

  • 当 getFormVariable() 返回 false 时,因为 url 中没有实际的 GET 语句,它必须加载一个类。这些类通过对象中的其他文件加载/激活。这是对象 $ConfigPage->SetProperty('Content', 'ContentHome');然后在 getFormVariable() 函数的文件中构造和使用对象。现在我如何在构造函数本身中构造这个内容?
  • 所有getFormVariable 所做的只是在$_GET$_POST 中查找值。应在getFormVariable外部 处理基于此信息的某些值的类实例化。
  • 虽然您的代码不是解决方案,但您确实改进了我自己的代码。因此,我将您的回答标记为解决方案,因为我放弃了这个问题。非常感谢!
【解决方案2】:

问题不清楚。

如何调用getFormVariable?您如何将 SetProperty 与 getFormVariable 提供的信息一起使用?

据我了解,你的意思是……

$var = getFormVariable(???);

if (false === $var)
{
    SetProperty('Content', 'ContentHome');
} else {
    SetProperty('var', $var);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2015-10-08
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多