PHP 'var' anahtar kelimesi ne işe yarar?


427

Bu muhtemelen çok önemsiz bir soru, ancak ne web arama motorları ne de php.net üzerinden cevap bulamadım. Lütfen açıklamak için zamanınız yoksa, beni bu konuda okuyabileceğim yere yönlendirin.

  1. PHP'de 'var' anahtar kelimesi ne anlama geliyor?
  2. PHP4 ve PHP5 arasında herhangi bir fark var mı?

4
30 Temmuz 2009'da bu soruyu sorduğunuzda, bu henüz php.net/manual/en/language.oop5.visibility.php ? De yayınlanmamıştı : "Not: PHP 4 yöntemi ile değişken bildirme yöntemi var anahtar sözcüğü uyumluluk nedeniyle hala desteklenmektedir (genel anahtar kelimeyle eşanlamlı olarak). 5.1.3'ten önceki PHP 5'te kullanımı bir E_STRICT uyarısı oluşturur. " Ya da belki de bulmamıştın. Ancak cevap php.net adresinde açıkça belirtilmiştir.
Jaime Montoya

PHP'nin bu yıllarda hangi yolculukları geçtiğini görmek gerçekten inanılmaz!
Mehrdad Shokri

Yanıtlar:


384

PHP4'te sınıf üyesi değişkenleri bildirmek içindir ve artık gerekli değildir. PHP5'te çalışacak, ancak E_STRICTPHP'de, 5.0.0 sürümünden 5.1.2 sürümüne kadar, kullanımdan kaldırıldığı andan itibaren bir uyarı verecektir . PHP 5.3'ten bu yana, var kullanımdan kaldırılmıştır ve 'herkese açık' ile eşanlamlıdır.

Örnek kullanım:

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

10
"Not: varAnahtar kelime ile bir değişken bildirme PHP 4 yöntemi hala uyumluluk nedenleriyle desteklenmektedir ( publicanahtar kelime ile eşanlamlı olarak ). 5.1.3'ten önceki PHP 5'de kullanımı bir E_STRICTuyarı oluşturur ." php.net/manual/en/language.oop5.visibility.php DÜZENLEME: Az önce bunun başka bir cevapta alıntılandığını gördüm . Ama sizinkini buna göre düzenlemelisiniz.
Sk8erPeter

Bu, bir üye değişken için anahtar kelimeyi kullanmanız gerektiği anlamına gelir public. Bu doğru mu? Biri basitçe koyamaz $x;mı?
limeandcoconut

1
bu yüzden PHP'nin kullanımdan kaldırılmış sürümleriyle çalışmaktan endişe duymadığımız için sadece genel / özel ve tamamen yok sayılıyor olmak tavsiye edilir mi?
NoodleOfDeath

1
2019 itibariyle: php-fig.org/psr/psr-12/#43-properties-and-constantsvar kullanılmaması gerektiğini belirtir ve tüm mülklerde görünürlük bildirilmelidir.
Charles Wood

79

varAnahtar kelime için kullanılan PHP 4'te bir sınıfta beyan değişkenler :

class Foo {
    var $bar;
}

PHP 5 ile özellik ve yöntem görünürlüğü ( public, protectedve private) tanıtıldı ve dolayısıyla varkullanımdan kaldırıldı.


17
PHP 5.3'te varkullanımdan kaldırılmıştır :)
Ionuț G. Stan

8
Kullanımdan kaldırılmışsa, şu anda 5.3'teki en iyi uygulama hangisidir - kullanmak veya kullanmamak? Gibi kullanabilir misin private var $foo = 'bar';?
Tom Auger

1
Neden kullanımdan kaldırıldığını bilen var mı?
Simon East

19
5.1.3'te tarif edilmemiştir - verilen tek nedenler "uyumluluk nedeniyle" dir . En iyi uygulama sadece PHP 4 ile uyumlu olması gerektiğinde kullanmak olduğunu düşünüyorum. Kesinlikle yapmayınprivate var - bu PHP 5 variçin bir eşanlamlı olduğu gibi , gerçek hızlı şeyler kıracak public.
cincodenada

2
var için gerçek bir eşanlamlı değil publicstatik üyelerin veya sabitlerin bildirilmesinde kullanılamayacağı için değildir.
Colin O'Dell

27

Http://www.php.net/manual/en/language.oop5.visibility.php adresinden alıntı yapıyorum

Not: var anahtar kelimesi ile bir değişken bildirme PHP 4 yöntemi hala uyumluluk nedenleriyle (genel anahtar kelime ile eşanlamlı olarak) desteklenmektedir. 5.1.3'ten önceki PHP 5'te, kullanımı bir E_STRICTuyarı oluşturur .


Testler yaptım. Dönen E_STRICT! sandbox.onlinephpfunctions.com/code/…
Wallace Maxters

1
@WallacedeSouza, bunun nedeni örneğinizde PHP 7 kullanmış olmanızdır. Yalnızca 5.0 - 5.1.3
RedClover

8

Cevap: Gönderen php 5.3 ve 'den> , varanahtar kelime publicbir sınıf içindeki değişkenler bildirilirken eşdeğerdir .

class myClass {
  var $x;
}

( php 5.3 ve için >) ile aynıdır :

class myClass {
  public $x;
}

Tarihçe: Daha önce sınıflarda değişken ilan etme normuydu, ancak daha sonra amortismana tabi tutuldu, ancak daha sonra (PHP 5.3) amortismana tabi tutulmadı.


5

Yani temelde eski bir stil ve PHP'nin yeni sürümü için kullanmayın. Genel anahtar kelimeyi kullanmak daha iyidir; var anahtar kelimesine aşık değilseniz. Yani kullanmak yerine

class Test {
    var $name;
}

kullanım

class Test {
   public $name;
}

neden böyle söyledin? vardinlemediğim için reddedildiğine dair haberler var mı? ikisi de eşanlamlı olmalı
NappingRabbit

PHP kılavuzundan: "var anahtar sözcüğüyle değişken bildirme PHP 4 yöntemi hala uyumluluk nedenleriyle (genel anahtar kelimenin eşanlamlısı olarak) desteklenmektedir." php.net/manual/en/language.oop5.visibility.php
Tomark


1

var, public gibi kullanılır. sınıfta bu şekilde bir değişken bildirilirse var $ a; eğer kapsamı sınıf için halka açık olduğu anlamına gelir. basit kelimeler var ~ kamu

var $a;
public

0

burada ve şimdi değişken bildirimi için 2018kullanılan varile publicolduğu gibi

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.