10/10/2018, 13:19
Hỏi về __construct trong php
Em có 1 class sv như sau:
class sv{
public $name;
public $address;
public $email;
function __construct($ten,$dc,$em){
$this->name= $ten;
$this->address= $dc;
$this->email= $em;
}
function getinfo(){
echo $this->name."<br />";
echo $this->address."<br />";
echo $this->email."<br />";
}
}
------------------------------
Em muốn hỏi là : có phải hàm __construct () trên thay cho các phương thức set, get không?
thay vì viết hàm
function __construct($ten,$dc,$em){
$this->name= $ten;
$this->address= $dc;
$this->email= $em;
}
Thì ta có thể viết như thế không?
function setName($value){
$this->name = $value;
}
function getName(){
return $this->name;
}
//---------------
function setAdress($value){
$this->address = $value;
}
function getAdress(){
return $this->address;
}
//-----------------
function setEmail($value){
$this->email = $value;
}
function getEmail(){
return $this->email;
}
-------------------------------------------------------------------
Em vẫn đang mông lung chỗ này!? Các bác giải thích giúp.
Cảm ơn nhiều.
class sv{
public $name;
public $address;
public $email;
function __construct($ten,$dc,$em){
$this->name= $ten;
$this->address= $dc;
$this->email= $em;
}
function getinfo(){
echo $this->name."<br />";
echo $this->address."<br />";
echo $this->email."<br />";
}
}
------------------------------
Em muốn hỏi là : có phải hàm __construct () trên thay cho các phương thức set, get không?
thay vì viết hàm
function __construct($ten,$dc,$em){
$this->name= $ten;
$this->address= $dc;
$this->email= $em;
}
Thì ta có thể viết như thế không?
function setName($value){
$this->name = $value;
}
function getName(){
return $this->name;
}
//---------------
function setAdress($value){
$this->address = $value;
}
function getAdress(){
return $this->address;
}
//-----------------
function setEmail($value){
$this->email = $value;
}
function getEmail(){
return $this->email;
}
-------------------------------------------------------------------
Em vẫn đang mông lung chỗ này!? Các bác giải thích giúp.
Cảm ơn nhiều.
Bài liên quan
http://php.net/manual/en/language.oop5.decon.php
Nó không liên quan gì đến việc thay thế các hàm set/get cả.
Vậy nên khi bạn khởi tạo đối tượng và gán cho class sv() với 3 tham số tương ứng thì thì thang __construct nó sẽ gán 3 tham số cho 3 thuộc tính tương tứng.
Còn các hàm set, get là lúc nào cần thì mình mới gọi nó để chạy.
Ví dụ:
class sv{
public $name;
public $address;
public $email;
public $id;
function __construct($ten,$dc,$em){
$this->name= $ten;
$this->address= $dc;
$this->email= $em;
}
..
..
nếu $id kia không nằm trong __construct($ten, $dc, $em) thì phải sử dụng set và get để truyền tham số vào $id phải không ạ?
function setId($value){
$this->id = $value;
}
function getId(){
return $this->id;
}
Link: http://www.ddth.com/showthread.php/1...#ixzz2B2MqxluY
Ví dụ class của bạn khi viết bằng PHP4 thì như sau:
class sv{
var $name;
var $address;
var $email;
var $id;
function sv($ten,$dc,$em){
$this->name= $ten;
$this->address= $dc;
$this->email= $em;
}
..
..
Khi gọi class thì như thế này:
$sv = new sv($ten,$dc,$em);
Còn PHP5 thì như sau:
class sv{
public $name;
public $address;
public $email;
public $id;
function __construct($ten,$dc,$em){
$this->name= $ten;
$this->address= $dc;
$this->email= $em;
}
..
..
Khi gọi class thì như thế này:
$sv = new sv($ten,$dc,$em);
Cách gọi y như PHP4 vậy thôi, khác là bạn không cần phải viết lại tên class nữa.
::END::
Khi bạn lập trình trong PHP5, chú ý các khóa public, protected, private.... nếu hiểu rõ và áp dụng tốt, đôi khi bạn sẽ không cần phải tạo các hàm setEmail() hoặc setId() nữa.