Php 向类中的现有方法添加属性/参数

Php 向类中的现有方法添加属性/参数,php,class,methods,parameters,Php,Class,Methods,Parameters,我有一个类管理员用户,它有一些修改用户数据的权限。我想向该方法添加两个或多个属性以完成所需的功能 function update_user_by_admin($new_level, $user_id, $def_pass, $new_email, $active, $confirmation = "no", $staff_salary, $set_duty_timings) { $this->user_found = true; $this->user_access_

我有一个类管理员用户,它有一些修改用户数据的权限。我想向该方法添加两个或多个属性以完成所需的功能

function update_user_by_admin($new_level, $user_id, $def_pass, $new_email, $active, $confirmation = "no", $staff_salary, $set_duty_timings) {
    $this->user_found = true;
    $this->user_access_level = $new_level;
    $this->set_staff_salary=$staff_salary;
    if ($def_pass != "" && strlen($def_pass) < 4) {
        $this->the_msg = "Password is too short use the min. of 4 chars.";
    } else {
        if ($this->check_email($new_email)) {
            $sql = "UPDATE %s SET access_level = %d, email = '%s', active = '%s', salary='salary'";
            $sql .= ($def_pass != "") ? sprintf(", pw = '%s'", md5($def_pass)) : "";
            $sql .= " WHERE id = %d";
            $sql_compl = sprintf($sql, $this->table_name, $new_level, $new_email, $active, $user_id);
            if (mysql_query($sql_compl)) {
                $this->the_msg = "Data is modified for user with id#<b>".$user_id."</b>";
                if ($confirmation == "yes") {
                    if ($this->send_confirmation($user_id)) {
                        $this->the_msg .= "<br>...a confirmation mail has been sent to the user.";
                    } else {
                        $this->the_msg .= "<br>...ERROR no confirmation mail is sent to the user.";
                    }
                }
            } else {
                $this->the_msg = "Database error, please try again!";
            }
        } else {
            $this->the_msg = "The e-mail address is invalid!";
        }
    }
}
由管理员更新功能用户($new\u level、$user\u id、$def\u pass、$new\u email、$active、$confirmation=“no”、$staff\u salary、$set\u duty\u timings){
$this->user\u found=true;
$this->user\u access\u level=$new\u level;
$this->set_staff_salary=$staff_salary;
如果($def_pass!=“”&&strlen($def_pass)<4){
$this->the_msg=“密码太短,请至少使用4个字符。”;
}否则{
如果($this->check_email($new_email)){
$sql=“更新%s设置访问权限\u级别=%d,电子邮件='%s',活动='%s',薪水='salary';
$sql.=($def_-pass!=”)?sprintf(“,pw='%s',md5($def_-pass)):”;
$sql.=“其中id=%d”;
$sql\u compl=sprintf($sql、$this->table\u name、$new\u level、$new\u email、$active、$user\u id);
if(mysql\u查询($sql\u compl)){
$this->the_msg=“数据是为id为“$user_id.”的用户修改的。”;
如果($confirmation==“yes”){
如果($this->send_confirmation($user_id)){
$this->the_msg.=“
…已向用户发送确认邮件。”; }否则{ $this->the_msg.=“
…错误:未向用户发送确认邮件。”; } } }否则{ $this->the_msg=“数据库错误,请重试!”; } }否则{ $this->the_msg=“电子邮件地址无效!”; } } }

如何在此处添加新的参数代码

您可以选择编辑类本身,或者编写一个从类继承并实现两个额外方法的新类

如果采用继承方法,则需要更新实例化该类的任何代码,并使其根据需要实例化您的类


通常,方法/功能是按照

function my_function_name($param1, $param2, $param3, etc, etc...) {
  // do something with $param1
  // do something with $param2
  // do something with $param3
}
该方法的参数定义为逗号分隔的列表。调用函数时,将参数(即实际值)传递给函数。要允许传递更多参数,只需在逗号分隔列表中添加更多参数,然后就可以在函数中执行任何需要执行的操作

例如,您的函数签名当前为:

function update_user_by_admin($new_level, $user_id, $def_pass, $new_email, $active, $confirmation = "no", $staff_salary, $set_duty_timings) {
// do some stuff...
}
要添加更多参数,只需扩展函数行即可。例如:

function update_user_by_admin($new_level, $user_id, $def_pass, $new_email, $active, $confirmation = "no", $staff_salary, $set_duty_timings, $another_param, $one_more) {
// do some stuff...
}
如果您询问如何将参数(接收到参数中的数据)传递给函数/方法,那么只需指定函数名,后跟逗号分隔的值列表(当然还有PHP中语句末尾所需的分号)。例如

将导致:

  • param1=“a”
  • 参数2=2
  • 参数3=真
更详细地查看您的代码,我可以看到正在使用方法参数来更新类的属性。所以你想以这样的方式结束:

function update_user_by_admin($new_level, $user_id, $def_pass, $new_email, $active, $confirmation = "no", $staff_salary, $set_duty_timings, $another_param, $one_more) {
    $this->user_found = true;
    $this->user_access_level = $new_level;
    $this->set_staff_salary=$staff_salary;
    // lots of other stuff
    $this->another_prop = $another_param;
    $this->one_more_prop = $one_more;
}
您还需要将额外的属性添加到类中,但由于您尚未在此处发布类的详细信息,我目前无法帮助您


如果这不是您想要的,请道歉。

您的代码看起来不完整,因为它没有包含类定义。只需在类中为新方法添加另一个函数。我只想在此方法中再添加两个属性。不需要继承。只需将html表单元素的参数传递给此函数,我就有问题了。你最初的问题是如何向类中添加方法。然后,您上面的评论询问如何向方法添加属性(没有意义),并且在传递参数时遇到问题。我认为你需要仔细阅读类、方法、参数和参数的定义。如果(如我所料)你问“我怎样才能为这个函数/方法添加两个以上的参数?”请重新回答这个问题。亲爱的先生,我是编程新手,对PHP中的参数传递不太了解。如果您能解释如何将一个参数传递给一个函数,那将非常有用。我的意思是你所期望的是非常正确的…我已经为我现在认为是你的问题添加了一个答案。如果您可以更新此问题以反映您的实际请求,这将非常有用。我尝试过设置员工工资,并从html代码中获取其值,但不起作用
code
我没有在这里提到类代码,因为它继承自另一个类,并且是一个派生类。如果您能找出我缺少的内容,请告诉我我将发布整个类代码。我希望您使用的是对象引用,而不是$u post数组。乍一看,你的括号好像放错地方了。无论如何,我认为您需要隔离您的问题,以查看在存储值或检索值时是否发生问题。请参阅或谷歌
调试php
,以获取更多帮助。我在存储它们时遇到问题。感谢您的贡献。如果有老师能以这种方式提供帮助,我会感到惊讶。你真棒,先生。我没有撒谎……你现在应该拥有解决问题所需的所有信息。如果没有进一步的细节,我想我们也无能为力。
function update_user_by_admin($new_level, $user_id, $def_pass, $new_email, $active, $confirmation = "no", $staff_salary, $set_duty_timings, $another_param, $one_more) {
    $this->user_found = true;
    $this->user_access_level = $new_level;
    $this->set_staff_salary=$staff_salary;
    // lots of other stuff
    $this->another_prop = $another_param;
    $this->one_more_prop = $one_more;
}