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