Từ khóa PHP 'var' làm gì?


427

Đây có lẽ là một câu hỏi rất nhỏ, nhưng tôi không thể tìm thấy câu trả lời thông qua các công cụ tìm kiếm trên web, cũng như trên php.net. Xin vui lòng chỉ cho tôi đến nơi tôi có thể đọc về điều này, nếu bạn không có thời gian để giải thích.

  1. Từ khóa 'var' có nghĩa là gì trong PHP?
  2. Có sự khác biệt nào giữa PHP4 và PHP5 không?

4
Tôi đoán khi bạn hỏi câu hỏi này vào ngày 30 tháng 7 năm 2009, điều này chưa được công bố tại php.net/manual/en/lingu.oop5.visibility.php ?: "Lưu ý: Phương pháp PHP 4 khai báo một biến với Từ khóa var vẫn được hỗ trợ vì lý do tương thích (dưới dạng từ đồng nghĩa với từ khóa công khai). Trong PHP 5 trước 5.1.3, việc sử dụng từ này sẽ tạo ra cảnh báo E_STRICT. " Hoặc có thể bạn đã không tìm thấy nó. Nhưng câu trả lời được nêu rõ tại php.net.
Jaime Montoya

Thật tuyệt vời khi thấy những hành trình mà PHP đã vượt qua trong những năm qua!
Mehrdad Shokri

Câu trả lời:


384

Đó là để khai báo các biến thành viên lớp trong PHP4 và không còn cần thiết nữa. Nó sẽ hoạt động trong PHP5, nhưng sẽ đưa ra E_STRICTcảnh báo trong PHP từ phiên bản 5.0.0 cho đến phiên bản 5.1.2, kể từ khi nó không được dùng nữa. Kể từ PHP 5.3, var không bị phản đối và là từ đồng nghĩa với 'công khai'.

Ví dụ sử dụng:

class foo {
    var $x = 'y'; // or you can use public like...
    public $x = 'y'; //this is also a class member variables.
    function bar() {
    }
}

10
"Lưu ý: Phương pháp PHP 4 khai báo một biến bằng vartừ khóa vẫn được hỗ trợ vì lý do tương thích (như một từ đồng nghĩa với publictừ khóa). Trong PHP 5 trước 5.1.3, việc sử dụng nó sẽ tạo ra một E_STRICTcảnh báo." php.net/manual/en/lingu.oop5.visibility.php EDIT: Tôi chỉ thấy rằng nó đã được trích dẫn trong một câu trả lời khác . Nhưng bạn nên chỉnh sửa của bạn cho phù hợp.
Sk8erPeter

Điều này ngụ ý rằng cần phải sử dụng publictừ khóa với một biến thành viên. Điều đó có đúng không? Không thể chỉ đơn giản là đặt $x;?
limeandcocovy

1
Vì vậy, có nên chỉ gắn bó với công khai / riêng tư và bỏ qua var hoàn toàn vì chúng tôi không lo lắng về việc làm việc với các phiên bản PHP không dùng nữa?
NoodleOfDeath 5/07/2015

1
Tính đến 2019: php-fig.org/psr/psr-12/#43-properties-and-constants bang mà varkhông được sử dụng, và tầm nhìn phải được khai báo trên tất cả các tài sản.
Charles Wood

79

Các vartừ khóa được sử dụng để biến khai báo trong một lớp học trong PHP 4 :

class Foo {
    var $bar;
}

Với PHP 5 tài sản và tầm nhìn phương pháp ( public, protectedprivate) đã được giới thiệu và do đó varbị phản đối.


17
Trong PHP 5.3 varkhông được dùng nữa :)
Ionuț G. Stan

8
Nếu nó không được dùng nữa, thì cách tốt nhất bây giờ trong 5.3 - sử dụng hay không sử dụng nó là gì? Bạn có thể sử dụng nó như thế private var $foo = 'bar';nào?
Tom Auger

1
Bất cứ ai cũng biết tại sao nó bị mất giá?
Simon East

19
Nó không được đánh giá cao trong 5.1.3 - lý do duy nhất được đưa ra là "vì lý do tương thích" . Tôi nghĩ cách tốt nhất là chỉ sử dụng nó nếu bạn cần tương thích với PHP 4. Chắc chắn là không private var- điều đó sẽ phá vỡ mọi thứ thực sự nhanh chóng, như varchỉ là một từ đồng nghĩa với publictrong PHP 5.
cincodenada

2
varkhông phải là một từ đồng nghĩa thực sự publicvì nó không thể được sử dụng để khai báo các thành viên tĩnh hoặc hằng.
Colin O'Dell

27

Tôi trích dẫn từ http://www.php.net/manual/en/lingu.oop5.visibility.php

Lưu ý: Phương pháp PHP 4 khai báo một biến bằng từ khóa var vẫn được hỗ trợ vì lý do tương thích (dưới dạng từ đồng nghĩa với từ khóa công khai). Trong PHP 5 trước 5.1.3, việc sử dụng nó sẽ tạo ra một E_STRICTcảnh báo.


Tôi đã làm các bài kiểm tra. Không trả lại E_STRICT! sandbox.onlinephpfifts.com/code/ từ
Wallace Maxters 13/07/2015

1
@WallaceseSouza, đó là vì bạn đã sử dụng PHP 7 trong ví dụ của mình. Nó chỉ không hợp lệ trong các phiên bản 5.0 - 5.1.3
RedClover

8

Trả lời: Từ php 5.3 và >, vartừ khóa tương đương với publickhi khai báo các biến trong một lớp.

class myClass {
  var $x;
}

giống như (đối với php 5.3 và >):

class myClass {
  public $x;
}

Lịch sử: Trước đây, nó là tiêu chuẩn để khai báo các biến trong các lớp, mặc dù sau đó đã bị khấu hao, nhưng sau đó (PHP 5.3) nó đã trở nên không được khấu hao.


5

Vì vậy, về cơ bản nó là một kiểu cũ và không sử dụng nó cho phiên bản PHP mới hơn. Thay vào đó, tốt hơn là sử dụng từ khóa Công khai; nếu bạn không yêu thích từ khóa var. Vì vậy, thay vì sử dụng

class Test {
    var $name;
}

Sử dụng

class Test {
   public $name;
}

tại sao bạn nói vậy Có tin tức nào varbị phản đối mà tôi không nghe thấy? cả hai nên đồng nghĩa
NappingRợi

Từ hướng dẫn PHP: "Phương pháp PHP 4 khai báo một biến với từ khóa var vẫn được hỗ trợ vì lý do tương thích (như một từ đồng nghĩa với từ khóa công khai)." php.net/manual/en/language.oop5.visibility.php
TOMARK


1

var được sử dụng như công khai. nếu một biến được khai báo như thế này trong một lớp var $ a; nếu có nghĩa là phạm vi của nó là công khai cho lớp. nói một cách đơn giản var ~ công khai

var $a;
public

0

ở đây và bây giờ trong 2018việc sử dụng varđể khai báo biến đồng nghĩa với publicnhư trong

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
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.