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();  

コンストラクターは1つの引数を期待しますが、何も送信しません。

変化する

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

ユーザーが1人の場合は、次のように実行できます。

$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の専門家ではありませんが、クラスuserの2つの新しいインスタンスを作成しているようです。また、2番目のインスタンスでは、user_idをコンストラクターに渡していないようです。

$employee_id = new User(2365);

これは、私には、Userの新しいインスタンスを作成し、このインスタンスを変数$ employee_idに割り当てているように見えますが、これはあなたが望んでいることではないと思いますか?

$employee_type = new User();

これは、Userの別のインスタンスをインスタンス化し、それを変数$ employee_typeに割り当てているように見えますが、必要に応じてIDを渡さずにコンストラクターUser()を呼び出したため、エラー(引数がありません)が発生します。

戻りスクリプトの内容が正常に見える理由は、Userクラスの最初のインスタンスが(渡したために)IDを持ち、2番目のインスタンスがコンストラクターで設定されているためにemployeeタイプを持っているためです。

私が言っているように、私は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 に答える