有很多方法可以做到这一点。
定义的常量不能修改,但满足条件可以分析验证;尽管这个正在做所有这些;因为对于不可变/不可变的东西来说这将是双重工作
<?php
class Main{
const CONSTANT = 'value constant';
function ouputConts() {
echo var_dump(self::CONSTANT);
}
}
在你的情况下;我可以保持不变:
<?php
class Main{
const CONSTANT1 = 1; //integer
const CONSTANT2 = 0.1345; //float
const CONSTANT3 = 'text'; //string
const CONSTANT4 = array(1,2,3,4,5,10,20); //array
const CONSTANT5 = true; //bollean
function ouputConts() {
echo var_dump(self::CONSTANT1);
echo var_dump(self::CONSTANT2);
echo var_dump(self::CONSTANT3);
echo var_dump(self::CONSTANT4);
echo var_dump(self::CONSTANT5);
}
}
因为在 php 中,一个对象或任何类型的对象都被认为是可变的;您不能声明类型对象的常量。
文档:
https ://php.net/manual/en/language.constants.syntax.php
https://www.php.net/manual/en/language.oop5.constants.php
所以你的另一个问题是你是否可以将常量作为函数的属性传递:
是的,但您应该有一些注意事项:
如果您在同一个类中,则不必在同一类的任何函数中使用该值,而无需将其传递给类/作用域的全局:
class Main{
const CONSTANT = 'value constant';
function function1() {
$this->function2();
}
function function2() {
$this->function3();
}
function function3() {
$this->function4();
}
function function4() {
echo var_dump(self::CONSTANT);
}
}
如果该函数属于另一个类,我建议您首先将其存储在变量中...:
class Main1{
const CONSTANT = 'value constant';
function function1() {
$foo = CONSTANT;
Main2::FunctionTest($foo);
}
}
class Main2{
function FunctionTest($foo = '') {
echo var_dump($foo);
}
}
// I can not verify it.
我希望我对您的问题有所帮助;如果您需要更多帮助或加深您的查询,请给我留言。
更新; 我看到这个commnet:
@ChristophBurschka 通过这样做,当您使用该函数时,您没有帮助检索特定常量(所有类常量都不适用于此函数)。当你使用原生 PHP 函数时,你只是有可能使用可用的常量,并且 IDE 有能力找到它们(当你开始填充相应的参数时它会自动将它列出给你)?感谢您对类型提示的回答:-)
如果问题在您的范围内const
:
您可以在应用程序中声明全局常量(在所有类和函数中):
<?php
if (!defined('DB_PASS')) {
define('DB_PASS', 'yourpassword');
}
它将在整个应用程序的任何类和功能中可用。并且不用担心它的使用,因为它们是不可变的常数。
更新恢复和实施
通过我解释的最后一种方式,您可以进行比较并定义要使用的数据;如果是常量的数据还是用户发送的数据;但所有这些都必须与您定义的特定函数中的用户数据分析相关联。
最后更新
使用新定义,您可以:
<?php
//declaration:
if (!defined('PASS_SIS')) {
define('PASS_SIS', array(
'PASSWORD_DEFAULT' => 1,
'PASSWORD_BCRYPT' => 2,
'PASSWORD_ARGON2I' => 3,
'PASSWORD_ARGON2ID' => 4,
));
}
//call Function
$instanceOfMyClass->myFunction('er');
//function
function myFunction('er'){
echo var_dump(PASS_SIS);
//Access to data:
echo PASS_SIS['PASSWORD_DEFAULT'];
}