5

我的 php 代码有一些问题:所有信息都返回,但我不知道为什么会出现错误。对于我的索引页,我只包含了实际使用该类的代码行,除了一些包含之外,实际上没有其他代码。我确定这是我构建 __contstruct 的方式,但我不确定这样做的适当方式。我在如何从索引页面调用它时遗漏了一些东西。

我的 __construct 的这行代码在没有错误的情况下工作,但我不希望在我的类中分配变量。

public function __construct(){
    $this->user_id = '235454';
    $this->user_type = 'Full Time Employee';


}

这是我的课

<?php 

class User
{
protected $user_id;
protected $user_type;
protected $name;
public $first_name;
public $last_name;
public $email_address;

public function __construct($user_id){
    $this->user_id = $user_id;
    $this->user_type = 'Full Time Employee';


}


public function __set($name, $value){
    $this->$name = $value;

}

public function __get($name){
    return $this->$name;

}

public function __destroy(){


}


 }

 ?>

这是我的索引页中的代码:

<?php

ini_set('display_errors', 'On'); 
error_reporting(E_ALL);

 $employee_id = new User(2365);
 $employee_type = new User();   

echo 'Your employee ID is ' . '"' .$employee_id->user_id. '"' . ' your employement status is a n ' . '"' .$employee_type->user_type. '"';

echo '<br/>';

 ?>
4

2 回答 2

15

问题是:

$employee_type = new User();  

构造函数期望一个参数,但您什么也不发送。

改变

public function __construct($user_id) {

public function __construct($user_id = '') {

查看输出

$employee_id = new User(2365);
echo $employee_id->user_id; // Output: 2365
echo $employee_id->user_type; // Output: Full Time Employee
$employee_type = new User();
echo $employee_type->user_id; // Output nothing
echo $employee_type->user_type; // Output: Full Time Employee

如果您有一个用户,您可以这样做:

$employer = new User(2365);
$employer->user_type = 'A user type';

echo 'Your employee ID is "' . $employer->user_id . '" your employement status is "' . $employer->user_type . '"';

哪个输出:

Your employee ID is "2365" your employement status is "A user type"
于 2012-09-17T01:11:56.487 回答
7

我不是 PHP 专家,但看起来您正在创建 2 个新的类 user 实例,并且在第二次实例化时,您没有将 user_id 传递给构造函数:

$employee_id = new User(2365);

在我看来,这正在创建一个新的 User 实例并将该实例分配给变量 $employee_id - 我认为这不是您想要的吗?

$employee_type = new User();

这看起来像您正在实例化 User 的另一个实例并将其分配给变量 $employee_type - 但是您调用了构造函数 User() 而没有按要求传递 ID - 因此出现错误(缺少参数)。

您的返回脚本内容看起来不错的原因是因为 User 类的第一个实例有一个 ID(因为您传入了它),而第二个实例有一个员工类型,因为这是在构造函数中设置的。

就像我说的,我不知道 PHP,但我猜你想要更多的东西:

$new_user = new User(2365);
echo 'Your employee ID is ' . '"' .$new_user->user_id. '"' . ' your employement status is a n ' . '"' .$new_user->employee_type. '"';

在这里,您正在实例化分配给变量 $new_user 的用户类的单个实例,然后访问该单个实例的属性。

编辑:.....Aaaaaaaaand - 我太慢了:-)

于 2012-09-17T01:28:29.713 回答