Tại sao các biến PHP cần được đi trước với ký hiệu đô la?


13

Tôi hiểu rằng tất cả các biến PHP cần được bắt đầu bằng ký hiệu đô la (ví dụ $someValue = 1), nhưng tại sao lại như vậy? Tại sao sự lựa chọn thiết kế này được thực hiện?

Lý do tôi hỏi là bạn gái của tôi đã hỏi tại sao khi tôi đề cập rằng các biến PHP cần bắt đầu bằng ký hiệu đô la và tôi nhận ra rằng tôi không biết tại sao lựa chọn cú pháp này được đưa ra.

Có ý kiến ​​gì không?


11
Bởi vì người tạo ra PHP không biết cách viết một trình phân tích cú pháp. Vì vậy, một cái nạng là cần thiết để xác định định danh.
ThomasX

@ThomasX - Haha bạn có thể đúng ... Tôi cũng không phải là người hâm mộ của cơ sở mã C (yike)
Ben DeMott

Tôi nghĩ rằng chỉ những người tạo ra PHP mới có thể trả lời câu hỏi này.
kiamlaluno

1
Tôi đoán đó là để khuyến khích nhà phát triển ... mỗi khi bạn đặt dấu $ bạn gần với khoản thanh toán của mình hơn!
Kamil Klimek

Tôi sẽ rất vui nếu tôi không phải sử dụng $this->trước mọi biến và hàm của lớp.
Chloe

Câu trả lời:


8

Chà, tôi thực sự không phải là một fan hâm mộ lớn của $$$ (Tôi thực sự không quan tâm đến việc biến số này có giá bao nhiêu). Nhưng nó đến từ perl.

Các ngôn ngữ kịch bản được giải thích như perl hoặc php sử dụng $ để nhanh chóng xác định và phân tích các biến. Nó chỉ là một tối ưu hóa cho trình thông dịch. Nhưng chắc chắn không phải là một tối ưu hóa cho các lập trình viên!


Làm thế nào nó không phải là một tối ưu hóa cho một lập trình viên? - Tôi có thể xác định ngay các biến và phân biệt chúng với các cấu trúc khác ..
johannes

Tôi tin rằng Larry Wall đã từng nói $ trước các biến giúp cho việc mở rộng Perl dễ dàng hơn mà không phá vỡ mã hiện có. Anh ta có thể thêm các từ khóa mới chưa được sử dụng làm biến. Nó nên là bài viết này , nhưng nó đứng sau một tường thành :-(
SL Barth - Tái lập Monica

@johannes Tôi cũng có thể xác định ngay một biến trong C ngay cả khi không có $ vì tôi đã ghi nhớ tất cả các từ khóa và hàm có dấu ngoặc đơn sau chúng.
JSideris

1
@Bizorke C có thể có ít từ khóa hơn (không tính chúng) nhưng tốt, PHP có các hằng số, không có $, mặc dù mọi người thường sử dụng các hằng số trong UPERCASE. Và tốt, một khi bạn biết tất cả các từ khóa, v.v., bạn sẽ tiến bộ hơn, có thể đơn giản hơn với sự trợ giúp trực quan này ... nhưng sau đó: Đây là vấn đề của hương vị. Giả định của tôi cho một câu trả lời sẽ là "sao chép từ Perl" và "đơn giản hơn để phân tích cú pháp" aka. quyết định lịch sử
johannes

@johannes Tôi không nói $ được sao chép từ perl, tôi nói nó đến từ Perl; PHP dựa trên Perl. Vâng, đó là ưu tiên. Tôi không thích gõ $ mỗi lần và trong nhiều trình soạn thảo $ không được chọn khi bạn nhấp đúp vào từ đó (làm chậm quá trình sao chép / dán). Có PHP có nhiều từ khóa hơn C một chút, nhưng đối số của tôi vẫn áp dụng cho C ++, java, v.v ... Các từ khóa thường dễ ghi nhớ và thường tương đối nhất quán giữa các ngôn ngữ. Ngoài ra, PHP không CHỈ dành cho người mới bắt đầu. Tôi lập trình bằng PHP (và nhiều ngôn ngữ khác) mỗi ngày và tôi có thể nói với bạn rằng $ đã không làm gì ngoài việc làm tôi chậm lại.
JSideris

5

PHP ban đầu là một cú pháp meta được phân tích cú pháp và được gọi một cách linh hoạt - thành các hàm chương trình c được biên dịch.
Theo cách này, bạn có thể nghĩ nó tương tự như chương trình "shell" cho "web" ...
Không có gì lạ khi các biến có $ Dollarign được sử dụng tương tự như biến shell.

Khi tôi 12 tuổi và tôi đang học PHP 3 ... là ngôn ngữ lập trình đầu tiên của tôi - có cuộc sống $ làm cho dễ dàng hơn nhiều. Tôi biết biến là gì, nhưng có một lời nhắc trong tất cả các mã nguồn tôi đã đọc khiến việc học trở nên khả thi ... không chắc chắn tôi sẽ ở đây hôm nay nếu tôi không bắt đầu với PHP.

Đây là một ví dụ từ -> http://www.php.net/manual/en/history.php.php

<! - bao gồm /text/header.html ->

<! - getenv HTTP_USER_AGENT ->
<! - ifsubstr $ exec_result Mozilla ->
  Xin chào, bạn đang sử dụng Netscape! <P>
<! - endif ->

<! - cơ sở dữ liệu sql chọn * từ bảng trong đó user = '$ username' ->
<! - ifless $ numentries 1 ->
  Xin lỗi, hồ sơ đó không tồn tại <p>
<! - lối ra cuối ->
  Chào mừng <! - $ người dùng ->! <P>
  Bạn có <! - $ index: 0 -> tín dụng còn lại trong tài khoản của bạn. <P>

<! - bao gồm /text/footer.html ->

2
Mặc dù tôi không nghi ngờ rằng ký hiệu đô la là hữu ích cho bạn, tôi tự hỏi liệu có thể đó là sự đơn giản tổng thể của PHP có liên quan nhiều hơn đến nó không. Tôi bắt đầu với Javascript cơ bản khi còn là một thiếu niên và thấy các biến khá dễ học, có lẽ vì các ví dụ Javascript trong những ngày đó rất đơn giản.
Matt Browne
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.