Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中创建静态方法并调用该方法_Php_Oop_Static - Fatal编程技术网

在PHP中创建静态方法并调用该方法

在PHP中创建静态方法并调用该方法,php,oop,static,Php,Oop,Static,我通过创建对象来获取表单类的值。它工作得很好。但我想使用静态方法。我尝试了,但没有成功 public function display() { $newform=new Form(); echo "<pre>"; var_dump($newform->getAll()); var_dump($newform->get('name')); } <?php class Form { private $value = ar

我通过创建对象来获取表单类的值。它工作得很好。但我想使用静态方法。我尝试了,但没有成功

public function display()
{
    $newform=new Form();

    echo "<pre>";
    var_dump($newform->getAll());

    var_dump($newform->get('name'));
}

<?php 

class Form
{
    private $value = array();

    function __construct() {
        // here you can use some validation or escapes 
        foreach($_POST as $key=>$value)
            $this->value[$key] = $value;

    }

    public function getAll() {
        return $this->value;
    }

    public function get($value) {
        $this->value = $_POST[$value];

        return $this->value;
    }

}
公共功能显示()
{
$newform=newform();
回声“;
变量转储($newform->getAll());
变量转储($newform->get('name'));
}

下面是
getAll
方法的一个示例。对于
方法,获得相同的想法:

class Form {

    private static $value = array();

    public static function factory() {
        // here you can use some validation or escapes 
        foreach($_POST as $key => $value) {
            static::$value[$key] = $value;
        }
    }

    public static function getAll() {
        return static::$value;
    }

    public static function get($key) {
        return static::$value[$key];
    }

}

也许你应该试着去阅读

例如:

public function display() {
    Form::factory();

    echo "<pre>";
    var_dump(Form::getAll());
    var_dump(Form::get('name'));
    echo "</pre>";
}
使用:

公共功能显示(){
Form::factory();
回声“;
var_dump(Form::getAll());
var_dump(Form::get('name'));
回声“;
}

您不能在类外将函数声明为public/private/protected

如果要静态调用此方法,可以尝试


静态方法是由static关键字定义的,
公共静态函数foo()
它只是给了我一个空字符串@sergio,因为您没有创建
表单
类的对象,
\u构造函数
没有调用,而且$\u POST没有设置为$value变量。为什么在调用静态方法时要创建Form类的对象?请修改您的答案。@Navid Anjum。编辑。但您需要调用Form::initPost()将POST darta设置到数组中。
public function display() {
    Form::factory();

    echo "<pre>";
    var_dump(Form::getAll());
    var_dump(Form::get('name'));
    echo "</pre>";
}
<?php
     function display()
{
    $newform=new Form($_POST);

    echo "<pre>";
    var_dump(Form::getAll());

    var_dump(Form::get('name'));
}

class Form
{
private static $value = array();
function __construct(){
// here you can use some validation or escapes 
function __constract($array){
    foreach($array as $key=>$value)
        self::$value[$key] = $value;

    }
}
public static function getAll(){

    return self::$value;
}
public static function get($value){

        self::$value = self::$value[$value];

    return self::$value;
}

}