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