我知道这个问题已经重复了很多,我一直在阅读,但是由于缺乏专业知识,我无法将任何解决方案应用于我的案子,实际上,我做了类似的事情问题here是我部分解决了问题的地方,所以是这样:
文件 vars.php
Widget
文件 apply.php
<?php
$var = array(
"var1" => "Sample text1",
"var2" => "Sample text2",
"var3" => "Sample text3",
"var4" => "Sample text4",
"var5" => "Sample text5",
"var6" => "Sample text6",
);
?>
因此,文件 apply.php 中的所有文本(第一文本,第二文本,第三文本等)应分别由<?php
include ("vars.php");
class mouth {
private $teeth = array(
FIRST_EX=>'first text',
SECOND_EX=>'second text'
);
public $forms = array(
'signin'=>array(
'fields'=>array(
'username'=>array('type'=>'text','placeholder'=>'third text','icon'=>'envelope'),
'password'=>array('type'=>'password','placeholder'=>'fourth text','icon'=>'lock')
),
'submit'=> 'fifth text',
'message'=> 'sixth text'
);
?>
进行更改,$var['var1']
,$var['var2]
等也分别显示样本文本1,样本文本2,样本文本3 等
因此文件 apply.php 最终应大致像这样:
$var['var3]
有人可以指导我如何表示变量以实现此目标吗?...非常感谢
答案 0 :(得分:1)
首先,您不能将变量注入类的声明主体中。 PHP会在编译代码时解析该类的这一部分,因此您之后不能直接对其进行修改。并且在设置变量之前先处理它。
幸运的是,我们有这些叫做方法的东西,它们就像函数一样,但是在类中(它们甚至被编写为函数),有些人只是称它们为函数。有时我发现自己在叫他们。
无论如何:
class Mouth
{ //capitalize class names
public function createTeeth($var1, $var2)
{
$teeth = array(
FIRST_EX => $var1,
SECOND_EX => $var2
);
}
public function createForms($var3, $var4, $var5 $var6)
{
$forms = array(
'signin' => array(
'fields' => array(
'username' => array(
'type' => 'text',
'placeholder' => $var3,
'icon' => 'envelope'
),
'password' => array(
'type' => 'password' ,
'placeholder' => $var4,
'icon' => 'lock'
)
),
'submit' => $var[ 'var5' ],
'message' => $var[ 'var6' ]
)
);
}
}
然后我们这样称呼它
$Mouth = new Mouth();
//then call them
$Mouth->createTeeth($var['var1'], $var['var2']);
您引用的内容也全错了。现在我将它们设置为类中的局部变量。如果要将它们设置为属性,请执行以下操作:
class Mouth
{ //capitalize class names
private $teeth = [];
public function createTeeth($var1, $var2)
{
$teeth = array(
FIRST_EX => $var1,
SECOND_EX => $var2
);
}
...
}
如果要输出,则将它们返回。
class Mouth
{ //capitalize class names
private $teeth = [];
public function createTeeth($var1, $var2)
{
return array(
FIRST_EX => $var1,
SECOND_EX => $var2
);
}
...
}
或以上的任意组合。您还可以根据需要为每个函数创建一个函数
class Mouth
{ //capitalize class names
private $teeth = [];
public function setTeeth($var1, $var2)
{
$this->teeth = array(
FIRST_EX => $var1,
SECOND_EX => $var2
);
}
public function getTeeth()
{
return $this->teeth;
}
...
}
这就是所谓的依赖注入。基本上,您是在注入值或东西,这取决于类。
希望有帮助,哦,我也向您的其他问题添加了评论。
如另一个答案中所述,您也可以将它们作为构造函数参数传递,很多选择取决于您如何使用它们。如果代码中同时需要它们,则可能不希望这样做。
我个人喜欢将其分解为参数的命名位置,这有助于我的IDE(集成开发环境)。这只是一个出色的编辑器,它执行诸如自动完成等功能。因此,当我将它们作为参数并使用该类时,IDE会告诉我参数是什么。像这样(如果我放入DOC注释):
class Mouth
{
/**
*
* @var array
*/
private $teeth = [];
/**
* populate the teeth array
*
* @param string $var1
* @param string $var2
*/
public function setTeeth($var1, $var2)
{
$this->teeth = array(
FIRST_EX => $var1,
SECOND_EX => $var2
);
}
/**
* returns the teath array
*
* @return array
*/
public function getTeeth()
{
return $this->teeth;
}
...
}
然后,它(IDE)告诉我那是什么东西。如果您有机会查看Eclipse PDT,那是我使用的编辑器,它是免费的,它将帮助您进行编码。
P.S。我必须为您https://www.php-fig.org/psr/psr-2/
答案 1 :(得分:0)
您可以按以下方式将其作为构造函数的一部分传递
class mouth {
private $var;
public function __construct($var) {
$this->var=$var;
}
.....
}
并在实例化类时传递它
$var = array(
"var1" => "Sample text1",
"var2" => "Sample text2",
"var3" => "Sample text3",
"var4" => "Sample text4",
"var5" => "Sample text5",
"var6" => "Sample text6",
);
$mouth = new mouth($var);
在类方法中,应使用$ this-> var ['var3']而不是$ var ['var3']
答案 2 :(得分:0)
您还可以要求在口类的构造函数中包含或包含var,如下所示。首先,将数组返回到vars文件中
winner.ranking
然后需要vars文件
<?php
return array(
"var1" => "Sample text1",
"var2" => "Sample text2",
"var3" => "Sample text3",
"var4" => "Sample text4",
"var5" => "Sample text5",
"var6" => "Sample text6",
);
?>
最后,您现在可以使用
应用$ var数组中的值 class mouth{
private $var;
public function __construct() {
$this->var=require('vars.php');
}
.....
}