创建静态方法并调用 PHP 中的方法

Creating staitic method and calling the method in PHP

我通过创建 object.It 的工作 fine.But 从表单 class 获取价值 fine.But 我想使用静态 method.I 尝试但没有成功。

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;
    }

}

这里是 getAll 方法的一个例子。对于 get 方法相同的想法:

public function display()
{
    var_dump(Form::getAll());
}

class Form
{
    private static $value = array();
   public static function initPost()
    {
        foreach($_POST as $key=>$value)
        self::$value[$key] = $value;
    }
    public static function getAll()
    {
        return self::$value;
    } 
}

也许你应该尝试阅读 PHP documentation about static keyword?

示例:

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>";
}

您没有在 class

之外将函数声明为 public/private/protected

你想静态调用这个方法,你可以试试

<?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;
}

}