2

有没有办法做这样的事情:

class Test {
    if(!empty($somevariable)) {
        public function somefunction() {

        }
    }
}

我知道这可能不是最佳实践,但我需要针对我遇到的一个非常具体的问题执行此操作,那么有什么办法吗?

如果该变量(与 URL 参数相关联)不为空,我只想将该函数包含在类中。正如现在所写,我得到错误:语法错误,意外的 T_VARIABLE,期待 T_FUNCTION

谢谢!

4

4 回答 4

1

如果变量不为空,则调用所需的函数。

<?php
    class Test {
        public function myFunct() {
            //Function description
        }
    }
    $oTest = new Test();
    if(!empty($_GET['urlParam'])) {
        oTest->myFunc();
    }
?>
于 2013-09-05T14:47:14.167 回答
1

这取决于您的具体用例,我没有足够的信息来给出具体的答案,但我可以想到一种可能的解决方法。

使用 if 语句扩展类。将除一个函数之外的所有内容放入AbstractTest.

<?php
abstract class AbstractTest 
{
    // Rest of your code in here
}

if (!empty($somevariable)) {
    class Test extends AbstractTest {
        public function somefunction() {

        }
    }
} else {
    class Test extends AbstractTest { }
}

现在,该类Test只有方法somefunctionif$somevariable不为空。否则它直接扩展AbstractTest并且不添加新方法。

于 2013-09-05T17:27:17.393 回答
0
class Test {
    public function somefunction() {

    }
}

实际上就是你所需要的。

请注意,类中的函数称为“方法”。

于 2013-09-05T14:50:03.587 回答
0

AFAIK,您不能在类范围内的方法之外有条件(如果流动)

Class Test {
 if (empty($Var)){
    public function Test_Method (){

    }
  }

}

不管用。为什么不让它一直存在,而只在需要时调用该方法?

例子:

Class Test { 
  public function Some_Method(){
    return 23094; // Return something for example purpose
  }

}

然后从您的 PHP 中:

$Var = ""; // set an empty string
$Class = new Test();

if (empty($Var)){
  echo $Class->Some_Method(); // Will output if $Var is empty 

}

也许您试图验证 OOP 范围内的字符串,然后举这个例子:

 Class New_Test {
     public $Variable; // Set a public variable 
    public function Set(){
      $This->Variable = "This is not empty"; // When calling, $this->variable will not be empty
    }
    public function Fail_Safe(){
      return "something"; // return a string
    }
  }

然后超出范围:

  $Class = new New_Test();
  if (empty($Class->Variable)){
     $Class->Fail_Safe(); 
   } // Call failsafe if the variable in OOP scope is empty
于 2013-09-05T15:17:59.880 回答