Php 重写函数的默认值
我正在尝试覆盖函数的默认值,以便可以自定义函数。下面是目前正在发生的事情 脚本加载的顺序Php 重写函数的默认值,php,Php,我正在尝试覆盖函数的默认值,以便可以自定义函数。下面是目前正在发生的事情 脚本加载的顺序 <?php require( dirname(__FILE__) . "/filters.php" ); ?> <?php require( themes_path . "/2014/functions.php" ); ?> functions.php 我在这里重写上面的函数 login.php 这里是我想要使用我在functions.php文件中覆盖的函数的地方 问题? 我仍
<?php require( dirname(__FILE__) . "/filters.php" ); ?>
<?php require( themes_path . "/2014/functions.php" ); ?>
functions.php
我在这里重写上面的函数
login.php
这里是我想要使用我在functions.php文件中覆盖的函数的地方
问题?
我仍然得到原始函数值,而不是覆盖函数值。如何访问覆盖函数值?您不需要在覆盖的某处调用方法
customize\u login
,当您需要覆盖值时,您需要使用覆盖调用该方法:
$args = array(
"image_alt" => "Override ALT",
"image_title" => "Override Title",
"image_class" => "profile-img"
);
$customize_login = customize_login($args);
if( is_array( $customize_login ) ){
$image_url = $customize_login["image_url"];
$image_alt = $customize_login["image_alt"];
$image_title = $customize_login["image_title"];
$image_class = $customize_login["image_class"];
}
刚才注意到,
customize\u login()
周围有一个条件检查,以查看函数是否已定义
因此,您应该能够通过在自己的代码中更早地声明来替换整个函数。提供:
function customize_login($args){
$myDefaults = array(
"image_alt" => "Override ALT",
"image_title" => "Override Title",
"image_class" => "profile-img"
);
$args = array_merge( $myDefaults, $args);
return $args;
}
在前面的某个地方,原始函数永远不会被定义,但是每个提供额外参数的调用(可能来自框架内)都会按预期工作。谢谢您的回答。我已经想到了这一点,但没有实现这一点,因为我不想在开发后触摸login.php页面,因为它不会安全升级。只要
customize\u login()
在没有$args的情况下被调用
它将返回内部定义的默认值。@RedVirus我不认为使用不起作用的东西并修复它以使其起作用是不安全的。
$customize_login = customize_login();
if( is_array( $customize_login ) ){
$image_url = $customize_login["image_url"];
$image_alt = $customize_login["image_alt"];
$image_title = $customize_login["image_title"];
$image_class = $customize_login["image_class"];
}
$args = array(
"image_alt" => "Override ALT",
"image_title" => "Override Title",
"image_class" => "profile-img"
);
$customize_login = customize_login($args);
if( is_array( $customize_login ) ){
$image_url = $customize_login["image_url"];
$image_alt = $customize_login["image_alt"];
$image_title = $customize_login["image_title"];
$image_class = $customize_login["image_class"];
}
function customize_login($args){
$myDefaults = array(
"image_alt" => "Override ALT",
"image_title" => "Override Title",
"image_class" => "profile-img"
);
$args = array_merge( $myDefaults, $args);
return $args;
}