use Anahtar Sözcüğü
Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 11 / 91.
Bir sınıfı her kullandığınızda tam ad alanı yolunu yazmak yorucu olabilir. use anahtar sözcüğü, bir sınıfı dosyanızın en üstünde içe aktarmanıza olanak tanır; böylece ona kısa adıyla başvurabilirsiniz.
\Blog\User ifadesini tekrar tekrar yazmak yerine, onu bir kez içe aktarabilirsiniz:
<?php
use Blog\User;
$user = new User("Alice");
echo $user->name;
Aynı ada sahip farklı ad alanlarından sınıflara ihtiyaç duyduğunuzda, as anahtar sözcüğünü kullanarak bir takma ad oluşturabilirsiniz:
<?php
use Blog\User as BlogUser;
use Shop\User as ShopUser;
$blogger = new BlogUser("Alice");
$customer = new ShopUser("alice@example.com");
echo $blogger->name . "\n";
echo $customer->email . "\n";
Çıktı:
Alice
alice@example.com
Aynı ad alanından birden fazla sınıfı gruplandırılmış içe aktarmaları kullanarak da içe aktarabilirsiniz:
<?php
use Blog\{User, Post, Comment};
$user = new User("Alice");
$post = new Post("Hello World");
Önemli Nokta: use ifadesi, namespace bildiriminden (varsa) sonra ve diğer tüm kodlardan önce yer almalıdır. Tekrarlanan namespace yollarını ortadan kaldırarak kodunuzu daha temiz ve okunması daha kolay hâle getirir.
Görev
Kolayuse anahtar sözcüğünü kullanarak sınıfları düzenli bir şekilde içe aktaralım ve her yerde tam ad alanı yollarını yazmaktan kaçınarak bir mesajlaşma uygulaması düzenleyelim.
Birlikte çalışan üç dosya oluşturacaksınız:
Messaging/Email.php:Messagingad alanında birEmailsınıfı tanımlayın. Bu sınıfta birpublic $addressözelliği, adresi kabul edip ayarlayan bir yapıcı ve"Sending email to [address]"döndüren birsend()yöntemi bulunmalıdır.Messaging/SMS.php:Messagingad alanında birSMSsınıfı tanımlayın. Bu sınıfta birpublic $phoneözelliği, telefon numarasını kabul edip ayarlayan bir yapıcı ve"Sending SMS to [phone]"döndüren birsend()yöntemi bulunmalıdır.main.php: Her iki sınıf dosyasını dahil edin, ardından her iki sınıfı da içe aktarmak içinuseanahtar sözcüğünü kullanın. Adresi"alice@example.com"olan birEmailnesnesi ve telefon numarası"555-1234"olan birSMSnesnesi oluşturun. Her nesne üzerindesend()çağrısının sonucunu yazdırın (her biri kendi satırında).
main.php içinde new \Messaging\Email(...) yazmak yerine sınıfları en üstte use ifadeleriyle içe aktararak yalnızca new Email(...) ve new SMS(...) yazabilirsiniz.
Kendin dene
<?php
// Sınıf dosyalarını dahil et
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';
// TODO: Messaging ad alanından her iki sınıfı içe aktarmak için 'use' anahtar kelimesini kullan
// Bu, 'new \Messaging\Email(...)' yerine 'new Email(...)' yazmanıza olanak tanır
// TODO: Create an Email object with address "alice@example.com"
// TODO: "555-1234" telefon numarasıyla bir SMS nesnesi oluştur
// TODO: Her nesne üzerinde send() çağrısının sonucunu yazdır (her biri kendi satırında)
?>Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesneler$this Anahtar SözcüğüMetotlarÖzelliklerYapıcı (__construct)Yıkıcı (__destruct)Tekrar - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımparent:: Anahtar SözcüğüMetot Geçersiz Kılmafinal Anahtar SözcüğüSoyut SınıflarTekrar - Çalışan Hiyerarşisi7Kapsülleme
Public, Protected, PrivateErişim Belirleyicileri DerinlemesineGetter ve Setter'larBilgi GizlemeYapıcı Özellik Terfisi (8.0)Tekrar - Öğrenci Kayıt Sistemi10İleri Düzey OOP Kavramları
Composition ve KalıtımBağımlılık EnjeksiyonuAnonim SınıflarEnum'lar (PHP 8.1)Fiber'lar (PHP 8.1)Nesne Klonlamaya Derinlemesine BakışÜreteçler ve Yineleyiciler13Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik KalıpDepo Kalıbı2Namespace’ler ve Autoloading
Namespace’lere Girişuse Anahtar SözcüğüPSR-4 Autoloading StandardıComposer AutoloaderTekrar - Düzenli Proje5Arayüzler ve Sözleşmeler
Arayüzlere GirişArayüzleri UygulamaBirden Çok Arayüz UygulamaArayüz ve Soyut Sınıf KarşılaştırmasıArayüzlerle Tür İpuçlarıTekrar - Şekil Hesaplayıcı8Sihirli Metotlar
Sihirli Metotlara Giriş__toString ve __debugInfo__get, __set, __isset, __unset__call ve __callStatic__clone ve Nesne Klonlama__serialize ve __unserializeTekrar - Özel Koleksiyon3Sınıf Özellikleri
Örnek ve Statik ÖzelliklerSınıflarda SabitlerStatik Metotlar ve ÖzelliklerPrivate ve Protected ÖzelliklerSalt Okunur Özellikler (PHP 8.1)Tekrar - Banka Hesabı Yöneticisi6Çok Biçimlilik
Metot Geçersiz Kılmayı Yeniden Ele AlmaArayüzler Yoluyla Çok BiçimlilikTür İpuçları ve Birleşim TürleriGeç Bağlanan Statik ÇağrılarÖzet - Ödeme İşlemcisi9Trait'ler
Trait'lere GirişBirden Çok Trait KullanımıTrait Çakışmalarını ÇözümlemeTrait'lerde Soyut MetotlarTrait'ler ve Kalıtım Karşılaştırması12Tasarım Desenleri 1. Bölüm
Tasarım Desenlerine GirişSingleton DeseniFactory DeseniObserver DeseniStrategy DeseniKendi başına pratik yap: Online PHP derleyicisi