registerメソッドがオブジェクト(クラスではなくインスタンス)に関連付けられている場合は、事前に設定する必要のある内部プロパティを使用する必要があります。したがって、ユーザーをインスタンス化し、プロパティを設定してから、$ user-> register()を呼び出します。
$user = new User();
$user->firstName = 'name'; //$user->setFirstName('name') could also work
$user->lastName = 'last name'; // for this to work, the properties have to be public
$user->register();
ユーザーAは自分自身を登録することしかできず、他には何も登録できないはずです。
パラメータ付きのメソッドを使用する場合、基本的には(ユーザーだけでなく)何でも登録できます。
また、登録がパラメータをデータベースに書き込むことを意味する場合、ユーザーオブジェクトの内部のみを使用するメソッドはより堅牢です。登録メカニズムを変更する場合(ユーザーオブジェクトから他の情報が必要な場合)、変更する必要があるのはユーザークラスのみです。
編集:
もう少し考えたので、ユーザーを登録するための別のクラスを作成すると思います。これは、ユーザーオブジェクト全体を取得し、ロールなどを追加してデータベースに保存します。そうすれば、ユーザーオブジェクトは少し単純になり、登録または登録解除の方法を知る必要がなくなり、登録メカニズムが変更されても、ユーザーは同じままでいられます。
編集2:
実際にはセッターではないメソッドからオブジェクトプロパティを設定する場合は注意してください(register($ fname、$ lname、...)の場合のように)。同じアプローチにより、明らかな理由もなく「何か」によってオブジェクトが変更され、コード内のどこにもセッターやプロパティへの直接呼び出しが見つからなかった場合に、頭痛の種が生じました。