【问题标题】:Strange error with an object declaration and url parameter对象声明和 url 参数的奇怪错误
【发布时间】:2015-04-20 16:34:00
【问题描述】:

我在编写应用程序时遇到一个奇怪的错误,我想在 url 中使用参数来更改函数中对象的类声明,我用代码解释了我的观点,我有产品页面:

/Product?Page=One

然后我确实喜欢在 product.php 中声明一个对象:

 public function product() {

   $Pagenumber = $_GET['Page']
   if(isset($Pagenumber) && trim($Pagenumber) == 'One'){
   var_dump('test') // give me "test" , and that mean it's OK!
   $object = new class1() 
   }
   if(isset($Pagenumber) && trim($Pagenumber) == 'Two'){

   $object = new class2()

   }
   //then in the first use of object I got an error
   ...
   }

错误是:

    Notice: Undefined variable: object

我尝试了很多可能性,但一无所获,而且,当我这样做时,我得到了一个奇怪的东西,它工作得很好:

         $foo = "One"; // string
         $Pagenumber = "One"; 

         settype($foo, "string"); // $foo vaut maintenant 5   (integer)
         settype($Pagenumber, "string");

         if($Pagenumber == $foo){
            $object = new class1()
        }
         $object // I can use the object with no error

       ...

这里我说问题仅在于链接中的参数?

有人有更好的解决方案来使用参数 URL 的值更改类声明或上述问题的任何更好的解决方案?

【问题讨论】:

  • 你确定$Pagenumber的内容吗?您没有else,因此如果不是"one""two",则可能无法定义$object...

标签: php object scope


【解决方案1】:

从您的网址看来,您正在使用网址重写:

/Product?Page=One

打开:

product.php

如果您为此使用 .htaccess,则需要确保添加 QSA 标志以确保将现有参数也添加到重写的 url。

除此之外,您应该确保始终设置$object当它不符合您的任何条件时添加错误处理。

【讨论】:

  • +1 用于建议在未设置 $object 时添加错误处理。很可能没有提供 URL 参数:这种情况应该相应地处理。
【解决方案2】:

这将帮助您提供变量 $object 生成通知的代码行,但猜测是您编写了 $$object 而不是 $object

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    相关资源
    最近更新 更多