PHP Nesne değişken adı farklı eylemler olarak yapın

3 Cevap php

Örneğin, eğer Diyelim ki kullanıcıların bir veritabanı var diyelim. Ben bilgi bu kullanıcılar hakkında veri tabanı oluşturmak alır bir sınıf var.

Ben bu gibi kendi adının sınıfı "kendini farkında", yapmak istiyorum:

<?php

class UserData {

//[code that fetches the ID number from the variable name, and queries the database for info]

}

$user24 = new UserData;
echo 'Welcome, '.$user24->name.'!';

?>

Bu kod olur, ideal, "! Bob, Hoş Geldiniz", ve ben adında ne bağlı olarak değiştirmek istiyorum gibi bir şey çıktı. Bu mümkün mü?

3 Cevap

Bu mümkün olsa bile (ben öyle düşünmüyorum), olmamalıdır. Diğerleri sadece sihirli bir sürü görmek istiyorum ve hata ayıklamak zor olurdu. Standartlar ve zaman bilinen fikirler / desenleri mümkün sopa.

Neden kullanmak istemiyorum:

$user = new UserData(24);

Veya (Eğer yapıcı herhangi bir engelleme işlemleri yapmamalıdır, çünkü) daha iyi:

$user = UserData::getById(24);

Belirli bir nesne birden fazla isim olabilir, çünkü bu modern programlama dillerinde genel olarak geçerli bir yöntem değildir. Örneğin, bir kullanıcı 25 varsayarak kullanıcı 24 farklı bir adı vardır, ne şu kod yazdırmak için beklediğiniz?

$user24 = new UserData;
echo 'Welcome, '.$user24->name.'!';
$user25 = $user24;
echo 'Welcome, '.$user25->name.'!';

Sadece bu değil, ama hiçbir adla nesneler olabilir:

echo 'Welcome, '.(new UserData)->name.'!';

Daha tipik bir uygulama nesne yapıcı böyle, uğraşıyoruz hangi kullanıcı bunu söyleyen bir parametre almak olurdu:

$user = new UserData(24);
echo 'Welcome, '.$user->name.'!';

Yani bir değer bunların her biri aynı değeri için bir referans olan birçok isim, olabilir - değişken adına (örneğin bir nesne gibi) bir değer 'nin ilişkisi tek-çok olduğunu. Hatta, yani bir ifade (yeni bir ifade, örneğin, bir nesne döndürür) olabilir, hiç ismi olabilir. Bu nedenle programlı bir değer "" adını bulmak mümkün değildir. Bir değer çoklu adlarını veya hiç isimlere sahip olabilir.