我正在使用PhpStorm构建下一个项目。自动取款机我正在寻找一种保存所有我的发帖请求的干净方法,而不是使用<fieldset id="Disable_Passport">
<form id="passport_upload_form" enctype="multipart/form-data">
<input type="hidden" name="user_email" value="<?php echo $this->session->user_email; ?>"/>
<p id="passport_msg" style="color:green; text-align:center;"></p>
<label style="font-size:16px;">Passport</label><span style="color:red; font-size:20px;">*</span>
<input class="form-control" id="passport" type="file" name="passport" onchange="validatePDF(this)" accept="application/pdf"/>
<input type="button" class="home_update_button" id="passport_update_button" name="passport_upload" value="Upload">
</form>
</fieldset>
等一个接一个地检查它们。因此,我可以循环isset
。
我正在尝试制作一个STD对象,但是PHP不会自动完成它。我认为我应该使用PHPDoc,但无法正常工作。
那我如何获得PhpStorm自动完成STD对象
我希望有人知道!
PS:如果您想出一种保存stdObject
值的更好方法,请告诉我!
代码:
$_POST
答案 0 :(得分:2)
stdClass
类型的对象没有标准属性,只有自定义属性。因此,PhpStorm没有任何明显的方法可以找出建议。甚至人类也将遇到麻烦,因为您的代码来自外部输入,因此可以包含任何内容。
使用存根进行破解是一种方法,但它会影响整个代码库。
一种可能的解决方案是在项目的任何地方声明一个自定义对象(该代码将由PhpStorm解析,甚至根本不需要执行):
class MandatoryPost extends stdClass
{
/**
* @var string
*/
public $first_name;
/**
* @var string
*/
public $last_name;
}
...并在此处和此处提供一些提示:
/** @var MandatoryPost $mandatory */
$mandatory->
但是,感觉就像是彻底的过度杀伤。首先使用stdClass
的唯一原因是因为您对本来相当程序化的代码执行了可疑的JSON序列化。如果要验证使用对象,则创建一个适当的类来处理整个事情:
$user = User::createFromPost($_POST);
if ($user->isComplete()) {
}
...或一直使用纯数组。
答案 1 :(得分:1)
我正在寻找一种干净的方式
我正在尝试制作一个STD对象
这些句子是互斥的。如果您想使其简洁,请为该数据创建自己的类,然后将其填充。使用水化器。
我不知道确切的位置,但是您有很多选择。例如,您可以序列化一个对象。
如果要使用“数组方式”,则可以使用此简单功能
function checkMandatory(array $mandatoryFields, array $array) {
return !array_diff_key(array_flip(mandatoryFields), $array);
}
用法
var_dump(checkMandatory(['first_name', 'last_name'], $_POST));
答案 2 :(得分:0)
您可以创建一个课程
<?php
class formFields
{
private $first_name;
private $last_name;
public function __construct($first_name, $last_name)
{
$this->first_name = $first_name;
$this->last_name = $last_name;
}
/**
* @return mixed
*/
public function getFirstName()
{
return $this->first_name;
}
/**
* @return mixed
*/
public function getLastName()
{
return $this->last_name;
}
/**
* @param mixed $first_name
*/
public function setFirstName($first_name)
{
$this->first_name = $first_name;
}
/**
* @param mixed $last_name
*/
public function setLastName($last_name)
{
$this->last_name = $last_name;
}
}