2011-12-24 20 views
6

Tôi có một lớp với nhiều phương thức và biến trong PHP. Mỗi lần tôi cần một phương thức để gọi một phương thức khác trong cùng một lớp, tôi phải thêm $this->. Điều này (!) Tạo ra một số nguồn dễ đọc, chẳng hạn như:

$nextX = $this->calculateNextX($this->DX, $this->DY, $this->DZ); 
$nextY = $this->calculateNextY($this->DX, $this->DY, $this->DZ); 
$nextZ = $this->calculateNextZ($this->DX, $this->DY, $this->DZ); 
$this->X = $nextX; 
$this->Y = $nextY; 
$this->Z = $nextZ; 

Có cách nào để tránh $this-> ở khắp mọi nơi không?

+3

Hình phạt rất đẹp :) – Marlon

+0

Làm thế nào để mỗi phương pháp tính toán sửa đổi thuộc tính tương ứng? – BoltClock

+0

@BoltClock Không phải lúc nào nó cũng làm như vậy. Mỗi phép tính có thể tái sử dụng ở những nơi khác. Tôi đã làm cho nó đã đọc X, Y, và Z để tránh đi qua ba biến. – fernacolo

Trả lời

6

Không, không thể tránh việc xây dựng bằng khái niệm OOP được tích hợp sẵn của PHP.

PHP, như JavaScript, Python và Perl - nhưng không giống Java và không phải lúc nào cũng giống như Ruby - luôn yêu cầu người nhận rõ ràng - hoặc, $this cho "phiên bản hiện tại" - để truy cập thành viên. Cú pháp chỉ là biểu mẫu PHP xảy ra để sử dụng để biểu thị cấu trúc này và có khả năng bị ảnh hưởng nặng nề bởi "trở thành người đến trễ" đối với ngôn ngữ và phải phù hợp với nó. Nó cũng gợi nhớ cú pháp Perl/C.

Trong khi vị trí có thể được thay đổi hoặc số trang web có thể có thể rút gọn, vào cuối ngày, điều đó phương pháp tiếp cận các thành viên.

Mã hóa vui vẻ.

+0

Chúc mừng mã hóa và giáng sinh vui vẻ :) – NikiC

0

Bạn có thể đặt nó vào cái gì khác

$a = $this; 
$a->stuff(); 

Ngay cả trong C++ Tôi thích sử dụng this dù cho rõ ràng rằng bạn đang hành động thành viên lớp. Nó không phải là tùy chọn trong PHP mặc dù.

2

Bạn có thể làm điều này trong mỗi phương pháp

extract(get_object_vars($this)); 

Mặc dù rằng sẽ chỉ cho phép bạn có được các biến, không phương pháp, cũng không phải thuộc tính tĩnh. Và họ sẽ không được tham khảo, vì vậy chỉ hữu ích cho việc đọc.

+0

Bạn đã lưu cho tôi một đoạn trích php. – clankill3r

Các vấn đề liên quan