Menu
Coddy logo textTech

use Anahtar Kelimesi

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ı (namespace) yolunu yazmak sıkıcı olabilir. use anahtar kelimesi, 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ı isme sahip farklı ad alanlarından (namespaces) sınıflara ihtiyaç duyduğunuzda, as anahtar kelimesini kullanarak bir takma ad (alias) 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 (namespace) 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. Tekrarlayan ad alanı (namespace) yollarını ortadan kaldırarak kodunuzu daha temiz ve okunması daha kolay hale getirir.

challenge icon

Görev

Kolay

Sınıfları temiz bir şekilde içe aktarmak ve her yerde tam ad alanı (namespace) yollarını yazmaktan kaçınmak için use anahtar kelimesini kullanarak bir mesajlaşma uygulaması düzenleyelim.

Birlikte çalışan üç dosya oluşturacaksınız:

  • Messaging/Email.phpMessaging ad alanında bir Email sınıfı tanımlayın. Bu sınıfın public $address özelliği, adresi kabul eden ve ayarlayan bir kurucusu (constructor) ve "Sending email to [address]" döndüren bir send() metodu olmalıdır.
  • Messaging/SMS.phpMessaging ad alanında bir SMS sınıfı tanımlayın. Bu sınıfın public $phone özelliği, telefon numarasını kabul eden ve ayarlayan bir kurucusu ve "Sending SMS to [phone]" döndüren bir send() metodu olmalıdır.
  • main.php — Her iki sınıf dosyasını dahil edin, ardından her iki sınıfı içe aktarmak için use anahtar kelimesini kullanın. "alice@example.com" adresiyle bir Email nesnesi ve "555-1234" telefonuyla bir SMS nesnesi oluşturun. Her nesne üzerinde send() metodunu çağırmanın sonucunu yazdırın (her biri kendi satırında).

main.php dosyasında, new \Messaging\Email(...) yazmak yerine, sınıfları en üstte use ifadeleriyle içe aktaracaksınız, böylece sadece new Email(...) ve new SMS(...) yazabilirsiniz.

Kendin dene

<?php
// Sınıf dosyalarını dahil edin
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO: Messaging ad alanından (namespace) her iki sınıfı da içe aktarmak için 'use' anahtar kelimesini kullanın
// Bu, 'new \Messaging\Email(...)' yerine 'new Email(...)' yazmanıza olanak tanır


// TODO: "alice@example.com" adresiyle bir Email nesnesi oluşturun


// TODO: "555-1234" telefonuyla bir SMS nesnesi oluşturun


// TODO: Her nesne üzerinde send() metodunu çağırmanın sonucunu yazdırın (her biri kendi satırında)

?>
quiz iconKendini test et

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