<!DOCTYPE html><html lang="tr-TR" prefix="og: http://ogp.me/ns#" > <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <link rel="icon" href="/favicon.ico" type="image/x-icon"/> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"/> <title>PHP OOP - Yusuf SEZER</title><meta name="description" content="PHP içerisinde yer alan OOP veya Nesne Yönelimli Programlamada kullanılan anahtar kelimeler örneklerle yer alıyor."/><link rel="canonical" href="https://www.yusufsezer.com.tr/php-oop/"/><meta property="og:title" content="PHP OOP - Yusuf SEZER"/><meta property="og:type" content="article"/><meta property="og:url" content="https://www.yusufsezer.com.tr/php-oop/"/><meta property="og:image" content="https://www.yusufsezer.com.tr/dosyalar/2017/10/php.png"/><meta property="og:image:width" content="450"/><meta property="og:image:height" content="250"/><meta property="og:site_name" content="Yusuf SEZER"/><meta property="fb:admins" content="100010460956162"/><meta property="og:description" content="PHP içerisinde yer alan OOP veya Nesne Yönelimli Programlamada kullanılan anahtar kelimeler örneklerle yer alıyor."/><meta property="article:tag" content="php"/><meta property="article:publisher" content="https://www.facebook.com/yusufsefasezer"/><meta property="article:published_time" content="2017-10-30T15:26:19Z"/><meta property="article:modified_time" content="2019-01-28T05:20:49Z"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@yusufsefasezer"/><meta name="twitter:domain" content="http://www.yusufsezer.com.tr"/><meta name="twitter:title" content="PHP OOP - Yusuf SEZER"/><meta name="twitter:description" content="PHP içerisinde yer alan OOP veya Nesne Yönelimli Programlamada kullanılan anahtar kelimeler örneklerle yer alıyor."/><meta name="twitter:image" content="https://www.yusufsezer.com.tr/dosyalar/2017/10/php.png"/><meta itemprop="image" content="https://www.yusufsezer.com.tr/dosyalar/2017/10/php.png"/> <meta name="theme-color" content="#343a40"/> <style> body { background-color: #eee; color: #333; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;} a { color: #333; } .content a { color: #0056b3; } .pagination > li > a, .pagination > li > span { color: #333 !Important; } article h2 { font-size: 20px; margin: 15px 0; } article .content p:first-child { color: #888; font-size: 110%; } .list-group a { padding: 5px 10px; border: none; } pre { line-height: normal; position: relative; } pre code { padding: 15px 10px !important; border-left: 4px solid #ff6600; } article { word-wrap: break-word; } article img { max-width: 100%; height: auto; } table, th, td { border: 1px solid #333; border-collapse: collapse; } th, td { padding: 3px; } </style></head><body> <header class="navbar sticky-top navbar-expand-lg navbar-dark" style="background-color: SteelBlue;"> <div class="container"> <a class="navbar-brand" href="/">Yusuf SEZER</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarMain"> <ul class="navbar-nav mr-auto"> <li class="nav-item active"><a class="nav-link" href="/">Anasayfa</a></li> <li class="nav-item active"><a class="nav-link" href="/hakkimda">Hakkımda</a></li> <li class="nav-item active"><a class="nav-link" href="/iletisim">İletişim</a></li> </ul> <form method="get" class="form-inline my-2 my-lg-0" action="https://www.yusufsezer.com.tr/"> <div class="input-group"> <input type="search" class="form-control" id="s" name="s" placeholder="Arama yap..." /> <span class="input-group-append"> <button type="submit" class="btn btn-success"><svg width="16" height="16" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 832q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm512 832q0 52-38 90t-90 38q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5t-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5 273.5 55.5 225 150 150 225 55.5 273.5q0 220-124 399l343 343q37 37 37 90z" fill="#ffffff"/></svg></button> </span> </div></form> </div> </div></header><main> <div class="container mt-3"> <div class="row"> <section class="col-md-9"> <nav> <ol class="breadcrumb bg-white border mb-2" itemscope itemtype="https://schema.org/BreadcrumbList"> <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a href="/" title="Yusuf SEZER" itemprop="item name"> Anasayfa <meta itemprop="position" content="1"/> </a> </li> <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a href="/kategori/php/" itemprop="item name" title="PHP"> PHP <meta itemprop="position" content="2"/> </a> </li> <li class="breadcrumb-item active">PHP OOP</li> </ol> </nav> <article class="card mb-2"> <header class="card-header p-2"> <h1 class="h4 m-1"><a href="https://www.yusufsezer.com.tr/php-oop/" title="PHP OOP">PHP OOP</a></h1> </header> <div class="card-body content p-2"><p>PHP içerisinde yer alan OOP veya Nesne Yönelimli Programlamada kullanılan anahtar kelimeler örneklerle yer alıyor.<span id="more-676"></span></p><h2>OOP nedir?</h2><p>OOP (<strong>O</strong>bject <strong>O</strong>riented <strong>P</strong>rogramming) veya NYP (<strong>N</strong>esne <strong>Y</strong>önelimli <strong>P</strong>rogramlama) bir yazılım geliştirme paradigmasıdır.</p><h2>Neden OOP?</h2><p>Yazılımlar geliştikçe karmaşıklaşır ve boyutları artar.</p><p>Karmaşıklık ve boyutun artmasıyla birlikte kodun bakımı, karmaşıklık ve boyuta göre daha fazla artar.</p><p>OOP geliştirilen yazılımın karmaşıklık ve bakım maliyetini azaltmak için kullanılır.</p><p>OOP bakım maliyetini azaltırken, kodun tekrar kullanılabilirliğini, anlaşılabilirliğini de arttırmaktadır.</p><p>Yazılım geliştirme yöntemi OOP destekleyen bir yazılım dili tarafından öğrenildiğinde diğer OOP destekli dilleri öğrenmeyi ve geliştirme yapmayı kolaylaşacaktır.</p><p>OOP tekniği, uzun süredir C++, JAVA ve C# gibi programlama dilleri tarafından başarıyla kullanılmaktadır.</p><p>Yazılım geliştirme sadece kod yazmaktan ibaret değildir.</p><p>Yazılım belirli bir düzene ve geliştirilebilirliğe sahip olmalıdır.</p><p>OOP tekniği içerisinde bulunan soyutlama, arayüz ve kalıtım gibi özelliklerle bu kolay bir şekilde sağlanır.</p><p>PHP OOP desteği sayesinde UML, MVC, HMVC, MVVM, Tasarım desenleri gibi OOP ile geliştirme tekniklerini uygulamayı sağlar.</p><p>Büyük ölçekli yazılımlar ekip halinde yapılır.</p><p>Yazılım içerisinde belirli bir düzen olmadığından kodlar diğer ekip üyeleri tarafından anlaşılmayacaktır.</p><p>Daha kötüsü kodu yazan kişi ekipten ayrıldığında kodu anlamak için ek süreye ihtiyaç duyulacaktır.</p><p>OOP ile geliştirme yapıldığında kodun anlaşılabilirliği artacağından bu gibi sorunlar ortadan kalkacaktır.</p><p>OOP öğrenmenin diğer avantajı PHP ile geliştirilen Zend, Yii, CodeIgniter, Laravel vb. yapıların OOP ile geliştirilmiş olmasıdır.</p><p>OOP tekniği öğrenildiğinde bu yapıların öğrenilmesi kolaylaşacaktır.</p><h2>OOP class</h2><p>OOP ile yazılım geliştirmede kullanılan nesnelere ait özellik ve işlevlerin tanımlandığı yapıya class denir.</p><p>Örnek olarak; kediler ve köpekler bir nesnedir.</p><p>Bu nesnelerin belirli bir özelliği (rengi, göz rengi vb.) ve işlevi (miyavlama, havlama, koşma, yakalama vb.) vardır.</p><p>Bu özellik ve işlevler class yapısı içerisinde tanımlanarak nesnelerin oluşturulması sağlanır.</p><p><strong>class yapısı</strong></p><p>PHP class yapısı temel olarak özellik ve işlevlerden meydana gelir.</p><p>Özellik öznitelik veya alan olarak, işlev ise metot veya yöntem olarak isimlendirilir.</p><p><strong>class örnekleri</strong></p><p>PHP class konusunun daha iyi anlaşılabilmesi için aşağıdaki <span style="text-decoration: underline;">basit class örneklerini</span> incelemek faydalı olacaktır.</p><p>Örnekte insan nesnesine ait bir sınıf tanımlanmıştır.</p><pre><code><?php
class Kisi {
public $adi;
private $soyadi;
public function __construct($gelenAdi, $gelenSoyadi) {
$this->adi = $gelenAdi;
$this->soyadi = $gelenSoyadi;
}
function adiSoyadi() {
return $this->adi . " " . $this->soyadi;
}
}
?></code></pre><p>Örnekte kitap nesnesine ait bir sınıf tanımlanmıştır.</p><pre><code><?php
class Kitap {
public $kitapAdi;
private $kitapSayfaSayisi;
public function __construct($gelenKitapAdi, $gelenKitapSayfaSayisi) {
$this->kitapAdi = $gelenKitapAdi;
$this->kitapSayfaSayisi = $gelenKitapSayfaSayisi;
}
function sayfaSayisi() {
return $this->kitapSayfaSayisi;
}
}
?>
</code></pre><p><strong>NOT:</strong> Örnekler class yapısı hakkında bilgi edinmek için basit bir şekilde verilmiştir.</p><p><strong>class kullanımı</strong></p><p>Tanımlanmış class yapısını kullanmak için bir örneğinin çıkarılması gerekir.</p><p>Örnekleme <strong>new</strong> anahtar kelimesi ile yapılır.</p><p>Örnekleme sonrasında bir nesne ortaya çıkar.</p><pre><code><?php
$ben = new Kisi("Yusuf", "SEZER");
?></code></pre><p>Örnekleme sonrasında sınıf içerisindeki özellik ve işlevlere <strong>-></strong> ile erişilir.</p><p>İşlevleri/metotları çağırma</p><pre><code><?php
$ben = new Kisi("Yusuf", "SEZER");
echo $ben->adiSoyadi();
?></code></pre><p>Özelliklere/niteliklere erişme</p><pre><code><?php
$ben = new Kisi("Yusuf", "SEZER");
echo $ben->adi;
?></code></pre><p>PHP class yapısının daha iyi anlaşılması için çeşitli örnekler yapıp denemek faydalı olacaktır.</p><h2>OOP özellikler</h2><p>Nesnelerin tanımlandığı sınıf içindeki değişkenlere özellik denir.</p><p>Nesneler çeşitli özelliklere sahip olabilir.</p><p>OOP ile yazılım geliştirmede öğrenci nesnesine ait bir sınıf tanımlandığında öğrenciye ait sıra numarası, adı, soyadı ve bölüm gibi bilgiler bir öğrencinin özelliği olarak ifade edilir.</p><p>Benzer şekilde kedi nesnesine ait bir sınıf tanımlandığında kedinin rengi, boyu, göz rengi vb. bilgiler nesnenin özellikleri olarak tanımlanır.</p><p>Örnekte <strong>Ogrenci</strong> sınıfı ve özellikleri yer almaktadır.</p><pre><code><?php
class Ogrenci {
private $ogrenciID = 0;
public $ogrenciAdi = "";
public $ogrenciSoyadi = "";
protected $ogrenciBolum = "";
}
?></code></pre><p>Örnekte <strong>Kedi</strong> sınıfı ve özellikleri yer almaktadır.</p><pre><code><?php
class Kedi {
public $kediRengi = "";
private $kediBoyu = 0.0;
protected $kediGozRengi = "";
}
?></code></pre><p>Sınıf içerisindeki özelliklere metotlardan <strong>$this->ozellikAdi</strong> ile erişilir.</p><p>Özellikler bir OOP kuralı olan public, protected ve private değerleri alan erişim belirleyicilere sahiptir.</p><p>Herhangi bir erişim belirleyici belirtilmediğinde özellik varsayılan olarak <strong>public</strong> erişim belirleyicisine sahip olur.</p><h2>OOP metotlar</h2><p>Nesnelerin tanımlandığı sınıf içindeki fonksiyonlara metot denir.</p><p>Nesneler çeşitli metotlara sahip olabilir.</p><p>OOP ile yazılım geliştirmede öğrenci nesnesine ait bir sınıf tanımlandığında öğrencinin ders eklemesi, çalışması, öğrenci bilgilerinin fonksiyon yardımıyla döndürülmesi metot olarak ifade edilir.</p><p>Benzer şekilde kedi nesnesine ait bir sınıf tanımlandığında kedinin miyavlaması, oyun oynaması, nesnenin metotları olarak tanımlanır.</p><p>Örnekte <strong>Ogrenci</strong> sınıfına özellikler ve metotlar yer almaktadır.</p><pre><code><?php
class Ogrenci {
private $ogrenciID = 0;
public $ogrenciAdi = "";
public $ogrenciSoyadi = "";
protected $ogrenciBolum = "";
private $dersler = array();
public $durum = "";
public function __construct($oAdi, $oSoyadi, $oBolum) {
$this->ogrenciAdi = $oAdi;
$this->ogrenciSoyadi = $oSoyadi;
$this->ogrenciBolum = $oBolum;
}
protected function dersEkle($dersAdi) {
$this->dersler[] = $dersAdi;
$this->dersCalis($dersAdi);
}
private function dersCalis($dersAdi) {
$this->durum = $dersAdi . " çalışıyor";
}
public function ogrenciBilgileri() {
return $this->ogrenciAdi . " - " . $this->ogrenciSoyadi . " - " . $this->ogrenciBolum;
}
}
$ben = new Ogrenci("Yusuf", "SEZER", "Bilgisayar Mühendisliği");
echo $ben->ogrenciBilgileri();
?></code></pre><p>Örnekte <strong>Kedi</strong> sınıfı ve özellikleri yer almaktadır.</p><pre><code><?php
class Kedi {
public $kediRengi = "";
private $kediBoyu = 0.0;
protected $kediGozRengi = "";
public function miyavla() {
return "Miyav!!!";
}
public function oyunOyna($oyunAdi) {
return "Kedi " . $oyunAdi . " oynuyor";
}
}
$pamuk = new Kedi;
echo $pamuk->miyavla();
echo "<br />";
echo $pamuk->oyunOyna("Top oyunu");
?></code></pre><p>Sınıf içerisindeki metotlara <strong>$this->metotAdi</strong> ile erişilir.</p><p>Metotlar bir OOP kuralı olan public, protected ve private değerleri alan erişim belirleyicilere sahiptir.</p><p>Herhangi bir erişim belirleyici belirtilmediğinde metot varsayılan olarak <strong>public</strong> erişim belirleyicisine sahip olur.</p><p>Metotların değer döndürmesi, parametre alması gibi özellikler php fonksiyonlarıyla aynıdır.</p><h2>OOP this</h2><p>PHP ile bir nesne oluşturulduğunda işletim sistemi nesneye ait bilgileri belleğin bir bölümüne yazar.</p><p>Bu bilgilere dışardan nesnenin tanımlandığı değişken ile erişilir.</p><p><strong>Kedi</strong> sınıfındaki metotlara</p><pre><code>$tekir = new Kedi();</code></pre><p>tanımı yapıldığında <strong>$tekir</strong> nesnenin bellek adresini/referansını tutar ve nesneye bu referans ile erişilir.</p><p>Nesnelerin tanımlandığı sınıf içinde, nesne oluşturulmadığından bellek adresi bilinmez, PHP nesne oluşturulurken bellek adresini <strong>$this</strong> anahtar kelimesine atar.</p><p>Böylece nesne içindeki özellik ve metotlara <strong>$this</strong> anahtar kelimesi ile ulaşılır.</p><p><strong>OOP this kullanımı</strong></p><p>Örnekte <strong>Kisi</strong> nesnesine ait bir sınıf tanımlanmıştır.</p><pre><code><?php
class Kisi {
public $adi;
private $soyadi;
public function __construct($gelenAdi, $gelenSoyadi) {
$this->adi = $gelenAdi;
$this->soyadi = $gelenSoyadi;
}
function adiSoyadi() {
return $this->adi . " " . $this->soyadi;
}
}
?></code></pre><p>Örnekte <strong>Urun</strong> nesnesine ait bir sınıf tanımlanmıştır.</p><pre><code><?php
<?php
class Urun {
public $urunAdi = "";
public $urunFiyat = 0.0;
public $urunKDV = 0.0;
public function __construct($uAdi, $uFiyat, $kdvOrani) {
$this->urunAdi = $uAdi;
$this->urunFiyat = $uFiyat; // Özelliklere erişim
$this->urunKDV = $this->kdvHesapla($kdvOrani); // Metotlara erişim
}
protected function kdvHesapla($kdvOrani) {
return $this->urunFiyat * ($kdvOrani / 100);
}
}
$meyve = new Urun("Elma", 15.0, 18.0);
echo "Ürün Adı : ".$meyve->urunAdi . "<br />";
echo "Ürün Fiyatı : " . $meyve->urunFiyat . "<br />";
echo "Ürün KDV : " . $meyve->urunKDV . "<br />";
?></code></pre><p>OOP this kullanımının daha iyi anlaşılması için çeşitli örnekler yapıp denemek faydalı olacaktır.</p><h2>OOP erişim belirleyiciler</h2><p>Nesne yapısının tanımlandığı sınıf yapısı içindeki özellik ve metotlara nereden erişileceğini belirleyen yapıya erişim belirleyici/gizlilik/görünürlük denir.</p><p>Nesne içindeki bazı özellik ve metotların dışardan erişilemez olması istenebilir.</p><p>Bu durumda özellik veya metodun başına erişim durumuna göre <strong>public</strong>, <strong>protected</strong> ve <strong>private</strong> anahtar kelimeleri yazılır.</p><p>Özellik veya metot <strong>public</strong> ise her yerden erişim sağlanır.</p><p>Örnekte üye nesnesine ait bir sınıf tanımlanmıştır.</p><pre><code><?php
class Uye {
public $uyeAdi = "";
public $uyeSoyadi = "";
public function __construct($uAdi, $uSoyadi) {
$this->uyeAdi = $uAdi;
$this->uyeSoyadi = $uSoyadi;
}
public function adiSoyadi() {
return $this->uyeAdi . " " . $this->uyeSoyadi;
}
}
$ben = new Uye("Sefa", "SE");
$ben->uyeAdi = "Yusuf";
$ben->uyeSoyadi = "SEZER";
echo $ben->adiSoyadi();
?></code></pre><p>Özelliklerin erişim durumu <strong>public</strong> olduğundan dışardan erişim sağlanmıştır.</p><p>Özellik veya metot <strong>protected</strong> ise sınıf içinden ve kalıtım ile türetilen sınıf içinden erişim sağlanır.</p><pre><code><?php
class Uye {
protected $uyeAdi = "";
protected $uyeSoyadi = "";
public function __construct($uAdi, $uSoyadi) {
$this->uyeAdi = $uAdi; // protected üyeye erişim
$this->uyeSoyadi = $uSoyadi; // protected üyeye erişim
}
protected function adiSoyadi() {
return $this->uyeAdi . " " . $this->uyeSoyadi;
}
}
$ben = new Uye("Sefa", "SE");
//$ben->uyeAdi = "Yusuf"; // hata verecektir.
//$ben->uyeSoyadi = "SEZER"; // hata verecetir.
//echo $ben->adiSoyadi(); // hata verecektir.
?></code></pre><p>Özelliklerin erişim durumu <strong>protected</strong> olduğundan dışardan erişim <span style="text-decoration: underline;">sağlanamamıştır</span>.</p><p>Özellik veya metot <strong>private</strong> ise sadece sınıf içinden erişim sağlanır.</p><pre><code><?php
class Uye {
private $uyeAdi = "";
private $uyeSoyadi = "";
public function __construct($uAdi, $uSoyadi) {
$this->uyeAdi = $uAdi; // private üyeye erişim
$this->uyeSoyadi = $uSoyadi; // private üyeye erişim
}
private function adiSoyadi() {
return $this->uyeAdi . " " . $this->uyeSoyadi;
}
}
$ben = new Uye("Sefa", "SE");
//$ben->uyeAdi = "Yusuf"; // hata verecektir.
//$ben->uyeSoyadi = "SEZER"; // hata verecetir.
//echo $ben->adiSoyadi(); // hata verecektir.
?></code></pre><p>Özelliklerin erişim durumu <strong>private</strong> olduğundan dışardan erişim <span style="text-decoration: underline;">sağlanamamıştır</span>.</p><p>Erişim durumu <strong>protected</strong> ve <strong>private</strong> olan özelliklere erişim dolaylı olarak <strong>public</strong> olan metotlar tarafından yapılabilir.</p><pre><code><?php
class Uye {
protected $uyeAdi = "";
private $uyeSoyadi = "";
public function __construct($uAdi, $uSoyadi) {
$this->uyeAdi = $uAdi;
$this->uyeSoyadi = $uSoyadi;
}
public function setAdi($uAdi) {
$this->uyeAdi = $uAdi; // protected özelliğe dolaylı erişim
}
public function setSoyadi($uSoyadi) {
$this->uyeSoyadi = $uSoyadi; // private özelliğe dolaylı erişim
}
function adiSoyadi() { // metoda herhangi bir erişim durumu verilmedi?
return $this->uyeAdi . " " . $this->uyeSoyadi;
}
}
$ben = new Uye("Sefa", "SE");
$ben->setAdi("Yusuf");
$ben->setSoyadi("SEZER");
echo $ben->adiSoyadi();
?></code></pre><p>Özellik veya metoda ait herhangi bir erişim durumu belirtilmediğinde varsayılan olarak <strong>public</strong> değerini alır.</p><h2>OOP kurucular ve yıkıcılar</h2><p>Nesne belleğe yüklendiğinde yapılacak işlemler için PHP tarafından otomatik olarak çağrılan kurucu metottan (__construct) faydalanır.</p><p>Nesne bellekten silinirken yapılacak işlemler için PHP tarafından otomatik olarak çağrılan yıkıcı metottan (__destruct) faydalanır.</p><pre><code><?php
class OrnekNesne {
public function __construct() { // Nesne oluşturulduğunda otomatik çalışacak metot
echo "Nesne belleğe yüklendi. <br />";
}
public function __destruct() { // Nesne silindiğinde otomatik çalışacak metot
echo "Nesne bellekten silindi.";
}
}
$nesne = new OrnekNesne();
?></code></pre><p>Örnekte <strong>Uye</strong> nesnesine ait bir sınıf tanımlanmıştır.</p><pre><code><?php
class Uye {
private $uyeAdi = "";
private $uyeSoyadi = "";
public function __construct($uAdi, $uSoyadi) {
$this->uyeAdi = $uAdi;
$this->uyeSoyadi = $uSoyadi;
}
}
$ben = new Uye("Yusuf", "SEZER");
?></code></pre><p>Dosya işlemlerinin yapıldığı bir sınıf içerisinde kurucu metot ile dosyanın açılması, yıkıcı metot ile de dosyanın kapatılması sağlanabilir.</p><p>Örnekte dosya işlemleri nesnesine ait bir sınıf tanımlanmıştır.</p><pre><code><?php
class DosyaIslemleri {
private $dosya = null;
private $dosyaAdi = "";
private $dosyaBoyutu = 0;
public function __construct($dAdi) {
$this->dosyaAdi = $dAdi;
$this->dosya = fopen($this->dosyaAdi, "r+");
$this->dosyaBoyutu = filesize($this->dosyaAdi);
}
public function dosyaOku() {
return fread($this->dosya, $this->dosyaBoyutu);
}
public function __destruct() {
fclose($this->dosya);
}
}
$metin = new DosyaIslemleri("dosya.txt");
echo $metin->dosyaOku();
?></code></pre><p>Kurucu ve yıkıcı metotların kullanımı zorunlu değildir.</p><h2>OOP Sabitler</h2><p>Değerinin sonradan değişmesi istenmeyen değişkenlere sabit denir.</p><p>Örnek olarak PI sayısı, E sayısı, KDV oranı vb. verilebilir.</p><p>PHP ile nesne içinde sabit tanımlamak için <strong>const</strong> anahtar kelimesi kullanılır.</p><pre><code><?php
class OrnekNesne {
const PI = 3.14;
}
?></code></pre><p>Sabitin değeri bir işlem sonucu olabilir.</p><pre><code><?php
class OrnekNesne {
const PI = 2 + 2;
}
?></code></pre><p>Sabitlere sınıf içerisinden <strong>self</strong> anahtar kelimesi ile erişilir.</p><pre><code><?php
class OrnekNesne {
const ADI_SOYADI = "Yusuf SEZER";
public function yazdir() {
return self::ADI_SOYADI; // Sabite erişim
}
}
$ben = new OrnekNesne();
echo $ben->yazdir();
?></code></pre><p>Sabitlere nesne oluşturmadan kapsama operatörü (::) ile erişilebilir.</p><pre><code><?php
class OrnekNesne {
const ADI_SOYADI = "Yusuf SEZER";
}
echo OrnekNesne::ADI_SOYADI;
?></code></pre><p>Sabitlere türetilen sınıf içerisinden <strong>parent</strong> anahtar kelimesi ile erişilir.</p><pre><code><?php
class OrnekNesne {
const ADI_SOYADI = "Yusuf SEZER";
}
class YeniNesne extends OrnekNesne {
public function yazdir() {
return parent::ADI_SOYADI; // Sabite erişim
}
}
$ben = new YeniNesne();
echo $ben->yazdir();
?></code></pre><p>Sabit değişkenler diğer değişkenlerden farklı olarak <strong>$</strong> ile başlamaz.</p><p>Sabit değişken oluşturulduktan sonra değer atanması zorunludur.</p><p>Sabit değişkenlerin adı PHP içinde kullanılan if, while gibi anahtar kelime olamaz.</p><p>Sabit değişkenler erişim belirleyicilere (public, protected, private) sahip olabilir.</p><p>Sabit değişkenlerin adlandırılmasında genellikle büyük karakter kullanılır.</p><h2>OOP static</h2><p>PHP static anahtar kelimesi sadece bir örneğinin olması gereken özellik ve metotlar için kullanılır.</p><p>Örnek olarak <strong>PDO</strong> sınıfına ait <strong>getAvailableDrivers</strong> metodu verilebilir.</p><pre><code><?php
print_r(PDO::getAvailableDrivers());
?></code></pre><p><strong>const</strong> anahtar kelimesinden farkı <strong>static</strong> özelliklerin değerinin değişmesi ve $ ile başlamasıdır.</p><p>Sınıf içinde static özellik tanımlamak için <strong>static </strong> anahtar kelimesi kullanılır.</p><pre><code><?php
class Uye {
static $uyeSayisi = 0;
public static function uyeSayisi() {
}
}
?></code></pre><p>Sınıf içindeki static özellik ve metotlara <strong>self</strong> anahtar kelimesi ile erişilir.</p><pre><code><?php
class Uye {
static $uyeSayisi = 0;
public static function uyeSayisi() {
return self::$uyeSayisi; // static özellik
}
public function getBilgi() {
return self::uyeSayisi(); // static metot
}
}
?></code></pre><p>Sınıf içindeki static özellik ve metotlara nesne oluşturmadan kapsama operatörü (::) ile erişilebilir.</p><pre><code><?php
error_reporting(E_ALL);
class Uye {
static $uyeSayisi = 0;
public static function uyeSayisi() {
return self::$uyeSayisi;
}
public function getBilgi() {
return self::uyeSayisi();
}
}
echo Uye::$uyeSayisi; // static özellik
echo Uye::uyeSayisi(); // static metot
//echo Uye::getBilgi(); // hata verir.
?></code></pre><p>Sınıf içindeki static özellik ve metotlara türetilen sınıf içerisinden <strong>parent</strong> anahtar kelimesi ile erişilir.</p><pre><code><?php
class Uye {
static $uyeSayisi = 0;
public static function uyeSayisi() {
return self::$uyeSayisi;
}
}
class Yonetici extends Uye{
public function uyeSayisiErisim() {
parent::$uyeSayisi++;
return parent::uyeSayisi();
}
}
$admin = new Yonetici();
echo $admin->uyeSayisiErisim();
?></code></pre><p>Sınıf içindeki static metottan, static olmayan özellik ve metotlara <strong>$this</strong> veya <strong>self</strong> anahtar kelimesi ile <span style="text-decoration: underline;">erişilemez.</span></p><pre><code><?php
error_reporting(E_ALL);
class Uye {
static $uyeSayisi = 0;
public static function uyeSayisi() {
return $this->getBilgi();
}
public function getBilgi() {
return self::$uyeSayisi;
}
}
echo Uye::$uyeSayisi; // static özellik
//echo Uye::uyeSayisi(); // hata verir
?></code></pre><p>Örnekte <strong>Uye</strong> sınıfı ve <strong>static</strong> özellik ve metot kullanımı ile ilgili örnek yer almaktadır.</p><pre><code><?php
class Uye {
private $uyeID = 0;
private $uyeAdi = "";
private $uyeSoyadi = "";
private static $uyeSayisi = 0;
public function __construct($uAdi, $uSoyadi) {
$this->uyeID = self::$uyeSayisi + 1;
$this->uyeAdi = $uAdi;
$this->uyeSoyadi = $uSoyadi;
self::$uyeSayisi++;
}
public static function uyeSayisi() {
return self::$uyeSayisi;
}
public function uyeBilgi() {
return $this->uyeID. " - " . $this->uyeAdi . " - " . $this->uyeSoyadi . "<br/>";
}
}
$ben = new Uye("Yusuf", "SEZER");
echo $ben->uyeBilgi();
$mehmet = new Uye("Mehmet", "SEZER");
echo $mehmet->uyeBilgi();
$sinan = new Uye("Sinan", "SEZER");
echo $sinan->uyeBilgi();
echo "Toplam Üye sayısı : " . Uye::uyeSayisi();
?></code></pre><p>Sınıf içindeki static metot ve özellikler erişim belirleyicilere (public, protected, private) sahip olabilir.</p><h2>OOP kalıtım</h2><p>Detaylı bilgi için <a href="https://www.yusufsezer.com.tr/php-oop-kalitim/" target="_blank" rel="noopener">PHP OOP Kalıtım</a> yazısına bakabilirsiniz.</p><h2>OOP final</h2><p>OOP yöntemi içerisindeki en önemli özellik olan katılım yöntemi bazen istenmeyen bir durum olabilir.</p><p>Bu durumda nesne tanımının yapıldığı sınıfın başına <strong>final</strong> anahtar kelimesi eklenerek sınıfın kalıtım alınması engellenir.</p><pre><code><?php
final class OrnekNesne {
public function adiYazdir() {
return "Yusuf";
}
}
class YeniNesne extends OrnekNesne { // hata verir.
public function adiYazdir() {
return "Yusuf";
}
}
?></code></pre><p>Benzer şekilde <strong>final</strong> anahtar kelimesiyle bir metodun tekrar tanımlanması engellenir.</p><pre><code><?php
class OrnekNesne {
final public function adiYazdir() {
return "Yusuf";
}
}
class YeniNesne extends OrnekNesne {
public function adiYazdir() { // hata verir.
return "Yusuf";
}
}
?></code></pre><p>PHP içindeki <strong>final</strong> özelliği sayesinde nesne ve metot güvenliği sağlanmış olur.</p><h2>OOP abstract class</h2><p>Detaylı bilgi için <a href="https://www.yusufsezer.com.tr/php-oop-abstract/" target="_blank" rel="noopener">PHP OOP abstract</a> yazısına bakabilirsiniz.</p><h2>OOP interface</h2><p>Detaylı bilgi için <a href="https://www.yusufsezer.com.tr/php-oop-interface/" target="_blank" rel="noopener">PHP OOP interface</a> yazısına bakabilirsiniz.</p><h2>OOP trait</h2><p>Detaylı bilgi için <a href="https://www.yusufsezer.com.tr/php-oop-trait/" target="_blank" rel="noopener">PHP OOP trait</a> yazısına bakabilirsiniz.</p><h2>OOP sihirli metotlar</h2><p>Detaylı bilgi için <a href="https://www.yusufsezer.com.tr/php-oop-sihirli-metotlar/" target="_blank" rel="noopener">PHP OOP Sihirli Metotlar</a> yazısına bakabilirsiniz.</p><h2>OOP anonim sınıflar</h2><p>Herhangi bir isme sahip olmayan sınıflara anonim sınıf denir. Anonim sınıflar OOP class yapısına benzer.</p><p>Ancak anonim sınıflara bir isim verilmediğinden sadece bir defa kullanılır.</p><p>Anonim sınıf oluşturmak içi <strong>new class</strong> yazmak yeterli olacaktır.</p><pre><code><?php
echo (new class {
private $ogrenciAdi = "Yusuf";
private $ogrenciSoyadi = "SEZER";
public function adiSoyadi() {
return $this->ogrenciAdi . " " . $this->ogrenciSoyadi;
}
})->adiSoyadi();
?></code></pre><p>Anonim sınıflar genellike değer döndürme işleminde kullanılır.</p><pre><code><?php
function Hesaplama($s1, $s2) {
return new class($s1, $s1) {
private $sayi1 = 0.0;
private $sayi2 = 0.0;
function __construct($s1, $s2) {
$this->sayi1 = $s1;
$this->sayi2 = $s2;
}
public function Topla() {
return $this->sayi1 + $this->sayi2;
}
public function Cikar() {
return $this->sayi1 - $this->sayi2;
}
public function Carp() {
return $this->sayi1 * $this->sayi2;
}
public function Bol() {
return $this->sayi1 / $this->sayi2;
}
};
}
echo Hesaplama(10, 20)->Topla();
echo "<br />";
echo Hesaplama(10, 20)->Carp();
?></code></pre><h2>OOP clone</h2><p>Nesneler temel veri tipleri gibi eşittir (=) ifadesiyle kopyalanamaz.</p><p>Nesneleri kopyalamak için <strong>clone</strong> anahtar kelimesi kullanılır.</p><p>Temel veri tipleri eşittir ifadesiyle eşitlendikten sonra değeri değişse bile eşitlenen değer değişmez.</p><pre><code><?php
$adi = "Yusuf";
$ben = $adi;
$ben = "Yusuf SEZER";
echo $adi . "<br />";
echo $ben . "<br />";
?></code></pre><p>Ancak nesneler eşittir (=) ifadesiyle eşitlenirse nesneye ait özelliğin değeri değişirse eşitlenen nesnenin değeri de değişir.</p><pre><code><?php
class Ogrenci {
public $ogrenciAdi = "";
public $ogrenciSoyadi = "";
function __construct($oAdi, $oSoyadi) {
$this->ogrenciAdi = $oAdi;
$this->ogrenciSoyadi = $oSoyadi;
}
public function ogrenciBilgileri() {
return $this->ogrenciAdi . " " . $this->ogrenciSoyadi;
}
}
$ben = new Ogrenci("Yusuf", "SEZER");
$sinan = $ben;
$sinan->ogrenciAdi = "Sinan";
$sinan->ogrenciSoyadi = "SEZER";
echo $sinan->ogrenciBilgileri(); // Sinan SEZER
echo "<br />";
echo $ben->ogrenciBilgileri(); // ??
?></code></pre><p>Nesneler eşittir (=) ifadesi ile kopyalanamadığından <strong>clone</strong> anahtar kelimesi ile kopyalanır.</p><pre><code><?php
class Ogrenci {
public $ogrenciAdi = "";
public $ogrenciSoyadi = "";
function __construct($oAdi, $oSoyadi) {
$this->ogrenciAdi = $oAdi;
$this->ogrenciSoyadi = $oSoyadi;
}
public function ogrenciBilgileri() {
return $this->ogrenciAdi . " " . $this->ogrenciSoyadi;
}
}
$ben = new Ogrenci("Yusuf", "SEZER");
$sinan = clone $ben; // clone ile kopyaladık.
$sinan->ogrenciAdi = "Sinan";
$sinan->ogrenciSoyadi = "SEZER";
echo $sinan->ogrenciBilgileri(); // Sinan SEZER
echo "<br />";
echo $ben->ogrenciBilgileri(); // ??
?></code></pre><p>Nesnelerin değeri değişse bile diğer nesne bundan etkilenmeyecektir.</p><h2>OOP tür dayatma</h2><p>PHP içindeki metotlar veya fonksiyonlar çeşitli parametre değeri alarak işlem yapar.</p><p>Toplama işlemi için parametre olarak alınan iki sayı yerine harf veya cümle yazıldığında PHP uyarı verecek ve istenmeyen bir sonuç üretecektir.</p><pre><code><?php
function Topla($sayi1, $sayi2) {
return $sayi1 + $sayi2;
}
echo Topla("Yusuf", "SEZER"); // ??
?></code></pre><p>PHP 7 ile birlikte desteği genişleyen Tür Dayatma özelliği ile daha fazla parametre türü belirtilebilir.</p><pre><code><?php
function Topla(int $sayi1, int $sayi2) {
return $sayi1 + $sayi2;
}
echo Topla("Yusuf", "SEZER"); // ??
?></code></pre><p>Girilen parametre türü belirtilenden farklıysa PHP <strong>Fatal error</strong> verip çalışmayı durduracaktır.</p><p>Parametre türü temel veri tipi (int, string, float) olabileceği gibi bir nesne de olabilir.</p><pre><code><?php
class Ogrenci {
public $ogrenciAdi = "";
public $ogrenciSoyadi = "";
function __construct($oAdi, $oSoyadi) {
$this->ogrenciAdi = $oAdi;
$this->ogrenciSoyadi = $oSoyadi;
}
}
function ogrenciBilgileri(Ogrenci $ogr) {
return $ogr->ogrenciAdi . " " . $ogr->ogrenciSoyadi;
}
$ben = new Ogrenci("Yusuf", "SEZER");
echo ogrenciBilgileri($ben);
?></code></pre><p>Tür dayatma özelliği nesne içindeki metotlarda da kullanılabilir.</p><h2>OOP zincirleme metotlar</h2><p>Nesne içindeki metotların <strong>$this</strong> anahtar kelimesi ile nesneyi tekrar referans göstererek nesne içindeki elemanları tekrar kullanmak için geliştirilen bir yöntemdir.</p><p>Yöntem metotların birbirine zincir halkası gibi bağlanmasından dolayı Zincirleme Metot (chaining metod) ismini almıştır.</p><pre><code><?php
class HesapMakinesi {
private $sonuc = 0;
function __construct($sayi) {
$this->sonuc = $sayi;
}
public function Toplama($sayi) {
$this->sonuc += $sayi;
return $this;
}
public function Cikarma($sayi) {
$this->sonuc -= $sayi;
return $this;
}
public function Carpma($sayi) {
$this->sonuc *= $sayi;
return $this;
}
public function Bolme($sayi) {
$this->sonuc /= $sayi;
return $this;
}
public function Goster() {
echo $this->sonuc;
return $this->sonuc;
}
}
$hesap = new HesapMakinesi(50);
$hesap->Toplama(20)->Cikarma(10)->Goster();
//$hesap->Toplama(20)->Bolme(10)->Goster();
?></code></pre><p>Örnekteki tüm metotların geri dönüş değeri olarak <strong>$this</strong> kullandığına dikkat edin.</p><h2>OOP namespace</h2><p>Detaylı bilgi için <a href="https://www.yusufsezer.com.tr/php-oop-namespace/" target="_blank" rel="noopener">PHP OOP namespace</a> yazısına bakabilirsiniz.</p><h2>OOP aşırı yükleme</h2><p>Detaylı bilgi için <a href="https://www.yusufsezer.com.tr/php-oop-asiri-yukleme/" target="_blank" rel="noopener">PHP OOP Aşırı Yükleme</a> yazısına bakabilirsiniz.</p><h2>OOP autoload</h2><p>Detaylı bilgi için <a href="https://www.yusufsezer.com.tr/php-oop-autoload/" target="_blank" rel="noopener">PHP OOP autoload</a> yazısına bakabilirsiniz.</p><p><a href="http://www.yusufsezer.com.tr/php-dersleri/" target="_blank" rel="noopener"><strong>PHP OOP Derslerine buradan ulaşabilirsiniz…</strong></a></p><p>Hayırlı günler dilerim.</p> <div class="share text-center"> <hr/> <div class="addthis_inline_share_toolbox"></div> </div> </div> </article> <section class="card mb-2"> <div class="card-body content p-3"> <form method="post"> <div class="form-group"> <div class="input-group mb-2"> <div class="input-group-prepend"> <div class="input-group-text"><svg class="bi bi-person" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M13 14s1 0 1-1-1-4-6-4-6 3-6 4 1 1 1 1h10zm-9.995-.944v-.002.002zM3.022 13h9.956a.274.274 0 00.014-.002l.008-.002c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664a1.05 1.05 0 00.022.004zm9.974.056v-.002.002zM8 7a2 2 0 100-4 2 2 0 000 4zm3-2a3 3 0 11-6 0 3 3 0 016 0z" clip-rule="evenodd"/></svg></div> </div> <input type="text" class="form-control" name="adisoyadi" placeholder="Adınız & Soyadınız" required="required"/> </div> </div> <div class="form-group"> <div class="input-group mb-2"> <div class="input-group-prepend"> <div class="input-group-text"><svg class="bi bi-envelope-fill" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M.05 3.555L8 8.414l7.95-4.859A2 2 0 0014 2H2A2 2 0 00.05 3.555zM16 4.697l-5.875 3.59L16 11.743V4.697zm-.168 8.108L9.157 8.879 8 9.586l-1.157-.707-6.675 3.926A2 2 0 002 14h12a2 2 0 001.832-1.195zM0 11.743l5.875-3.456L0 4.697v7.046z"/></svg></div> </div> <input type="email" class="form-control" name="eposta" placeholder="Mail adresiniz" required="required"/> </div> </div> <div class="form-group"> <div class="input-group mb-2"> <div class="input-group-prepend"> <div class="input-group-text"><svg class="bi bi-chat" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2.678 11.894a1 1 0 01.287.801 10.97 10.97 0 01-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 01.71-.074A8.06 8.06 0 008 14c3.996 0 7-2.807 7-6 0-3.192-3.004-6-7-6S1 4.808 1 8c0 1.468.617 2.83 1.678 3.894zm-.493 3.905a21.682 21.682 0 01-.713.129c-.2.032-.352-.176-.273-.362a9.68 9.68 0 00.244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9.06 9.06 0 01-2.347-.306c-.52.263-1.639.742-3.468 1.105z" clip-rule="evenodd"/></svg></div> </div> <textarea name="mesaj" class="form-control" placeholder="Mesajınız" required="required" rows="3"></textarea> </div> </div> <input type="submit" value="Gönder" class="button btn btn-block text-white" style="background-color: SteelBlue;"/> </form> </div> </section> <hr/> <section> <h3>Bunlara'da bakmalısın!</h3> <nav class="list-group"> <a href="/php-pdo-veri-ekleme/" class="list-group-item-action" title="PHP PDO Veri Ekleme">PHP PDO Veri Ekleme</a> <a href="/php-pdo-veri-cekme/" class="list-group-item-action" title="PHP PDO Veri Çekme">PHP PDO Veri Çekme</a> <a href="/php-curl/" class="list-group-item-action" title="PHP CURL Nedir? Kurulumu ve Kullanımı">PHP CURL Nedir? Kurulumu ve Kullanımı</a> <a href="/php-mysql-veri-cekme/" class="list-group-item-action" title="PHP MySQL Veri Çekme">PHP MySQL Veri Çekme</a> <a href="/php-ip-adresi-alma/" class="list-group-item-action" title="PHP IP Adresi Alma">PHP IP Adresi Alma</a> </nav> </section> </section> <aside class="col-md-3 p-md-0"> <section class="bg-white mb-2 shadow-sm text-center p-2"> <figure class="mb-2"> <img class="rounded-circle" src="/yusuf-sezer.jpg" alt="Yusuf SEZER" title="Yusuf SEZER" width="128" height="128"/> <figcaption class="mt-2"> <h3>Yusuf SEZER</h3> </figcaption> </figure> <a href="https://tr.linkedin.com/in/yusufsefasezer" target="_blank" rel="noreferrer"><svg width="32" height="32" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M477 625v991h-330v-991h330zm21-306q1 73-50.5 122t-135.5 49h-2q-82 0-132-49t-50-122q0-74 51.5-122.5t134.5-48.5 133 48.5 51 122.5zm1166 729v568h-329v-530q0-105-40.5-164.5t-126.5-59.5q-63 0-105.5 34.5t-63.5 85.5q-11 30-11 81v553h-329q2-399 2-647t-1-296l-1-48h329v144h-2q20-32 41-56t56.5-52 87-43.5 114.5-15.5q171 0 275 113.5t104 332.5z"/></svg></a> <a href="https://github.com/yusufsefasezer" target="_blank" rel="noreferrer"><svg width="32" height="32" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M896 128q209 0 385.5 103t279.5 279.5 103 385.5q0 251-146.5 451.5t-378.5 277.5q-27 5-40-7t-13-30q0-3 .5-76.5t.5-134.5q0-97-52-142 57-6 102.5-18t94-39 81-66.5 53-105 20.5-150.5q0-119-79-206 37-91-8-204-28-9-81 11t-92 44l-38 24q-93-26-192-26t-192 26q-16-11-42.5-27t-83.5-38.5-85-13.5q-45 113-8 204-79 87-79 206 0 85 20.5 150t52.5 105 80.5 67 94 39 102.5 18q-39 36-49 103-21 10-45 15t-57 5-65.5-21.5-55.5-62.5q-19-32-48.5-52t-49.5-24l-20-3q-21 0-29 4.5t-5 11.5 9 14 13 12l7 5q22 10 43.5 38t31.5 51l10 23q13 38 44 61.5t67 30 69.5 7 55.5-3.5l23-4q0 38 .5 88.5t.5 54.5q0 18-13 30t-40 7q-232-77-378.5-277.5t-146.5-451.5q0-209 103-385.5t279.5-279.5 385.5-103zm-477 1103q3-7-7-12-10-3-13 2-3 7 7 12 9 6 13-2zm31 34q7-5-2-16-10-9-16-3-7 5 2 16 10 10 16 3zm30 45q9-7 0-19-8-13-17-6-9 5 0 18t17 7zm42 42q8-8-4-19-12-12-20-3-9 8 4 19 12 12 20 3zm57 25q3-11-13-16-15-4-19 7t13 15q15 6 19-6zm63 5q0-13-17-11-16 0-16 11 0 13 17 11 16 0 16-11zm58-10q-2-11-18-9-16 3-14 15t18 8 14-14z"/></svg></a> <a href="https://twitter.com/yusufsefasezer" target="_blank" rel="noreferrer"><svg width="32" height="32" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1684 408q-67 98-162 167 1 14 1 42 0 130-38 259.5t-115.5 248.5-184.5 210.5-258 146-323 54.5q-271 0-496-145 35 4 78 4 225 0 401-138-105-2-188-64.5t-114-159.5q33 5 61 5 43 0 85-11-112-23-185.5-111.5t-73.5-205.5v-4q68 38 146 41-66-44-105-115t-39-154q0-88 44-163 121 149 294.5 238.5t371.5 99.5q-8-38-8-74 0-134 94.5-228.5t228.5-94.5q140 0 236 102 109-21 205-78-37 115-142 178 93-10 186-50z"/></svg></a> <div class="text-center mt-2"><a class="text-danger" href="http://yusufsezer.com/" target="_blank" rel="noreferrer">www.yusufsezer.com</a></div> </section> <section class="bg-white mb-2 border"> <header class="bg-light p-2"> <h3 class="h5 m-0">İlgini çekebilir</h3> </header> <nav class="list-group"> <a href="/html5-dersleri/" class="list-group-item list-group-item-action" title="HTML5 Dersleri">HTML5</a> <a href="/css3-dersleri/" class="list-group-item list-group-item-action" title="CSS3 Dersleri">CSS3</a> <a href="/rwd/" class="list-group-item list-group-item-action" title="Responsive Web Tasarım Dersleri">Responsive Web Tasarım</a> <a href="/javascript-dersleri/" class="list-group-item list-group-item-action" title="JavaScript Dersleri">JavaScript</a> <a href="/git-dersleri/" class="list-group-item list-group-item-action" title="Git Dersleri">Git</a> <a href="/mongodb-dersleri/" class="list-group-item list-group-item-action" title="MongoDB Dersleri">MongoDB</a> <a href="/node-js-dersleri/" class="list-group-item list-group-item-action" title="Node.js Dersleri">Node.js</a> <a href="/sql-dersleri/" class="list-group-item list-group-item-action" title="SQL Dersleri">SQL</a> <a href="/mysql-dersleri/" class="list-group-item list-group-item-action" title="MySQL Dersleri">MySQL</a> <a href="/oracle-dersleri/" class="list-group-item list-group-item-action" title="Oracle Dersleri">Oracle</a> <a href="/php-dersleri/" class="list-group-item list-group-item-action" title="PHP Dersleri">PHP</a> <a href="/web-servis-dersleri/" class="list-group-item list-group-item-action" title="Web Servis Dersleri">Web Servis</a> <a href="/linux-dersleri/" class="list-group-item list-group-item-action" title="Linux Dersleri">Linux</a> <a href="/programlama-ornekleri/" class="list-group-item list-group-item-action" title="Programlama Örnekleri">Programlama Örnekleri</a> <a href="/cpp-dersleri/" class="list-group-item list-group-item-action" title="C++ Dersleri">C++</a> <a href="/net-dersleri/" class="list-group-item list-group-item-action" title=".NET Dersleri">.NET</a> <a href="/java-dersleri/" class="list-group-item list-group-item-action" title="Java Dersleri">Java</a> </nav> </section> <section class="bg-white mb-2 border"> <header class="bg-light p-2"> <h3 class="h5 m-0">Yeni yazılar</h3> </header> <nav class="list-group"> <a href="/junit/" class="list-group-item list-group-item-action" title="JUnit">JUnit</a><a href="/java-json/" class="list-group-item list-group-item-action" title="Java JSON">Java JSON</a><a href="/java-14/" class="list-group-item list-group-item-action" title="Java 14">Java 14</a><a href="/java-13/" class="list-group-item list-group-item-action" title="Java 13">Java 13</a><a href="/java-12/" class="list-group-item list-group-item-action" title="Java 12">Java 12</a> </nav> </section> <script type="text/javascript">
var sc_project = 11810445;
var sc_invisible = 1;
var sc_security = "d6193d67";
</script> <script type="text/javascript" src="https://www.statcounter.com/counter/counter.js" async></script> <noscript><div class="statcounter"><img class="statcounter" src="//c.statcounter.com/11810445/0/d6193d67/1/" alt="Web Analytics" width="1" height="1"/></div></noscript> </aside> </div> </div></main><footer class="bg-white border-top p-3 text-center"> <div class="container"> <div class="row text-center"> <div class="col-md-6 text-md-left p-2 order-12 order-md-first">Yusuf SEZER <br/> <a href="mailto:
[email protected]">
[email protected]</a></div> <div class="col-md-6 text-md-right p-2 order-first order-md-12"> <q>İnsanların en hayırlısı insanlara faydalı olanıdır.</q> <br/> Tüm hakları saklıdır. </div> </div> </div></footer> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/dracula.min.css"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script> <script>
document.addEventListener("DOMContentLoaded", baslat);
function baslat(){
var codes = document.querySelectorAll("pre");
var len = codes.length;
var i = 0;
for(i = 0; i < len; i++) {
var btn = document.createElement("button");
btn.type = "button";
btn.className = "btn btn-outline-light btn-sm";
btn.style.position = "absolute";
btn.style.top = "3px";
btn.style.right = "5px";
btn.textContent = "Kopyala";
btn.addEventListener("click", kopyala);
codes[i].insertBefore(btn, codes[i].firstChild);
//codes[i].append(btn);
}
hljs.initHighlightingOnLoad();
}
function kopyala(event){
var code = event.target.parentElement.querySelector("code");
var textarea = document.createElement("textarea");
textarea.textContent = code.textContent;
textarea.style.position = "fixed";
textarea.style.top = 0;
textarea.style.left = 0;
textarea.style.width = "1px";
textarea.style.height = "1px";
textarea.style.padding = 0;
textarea.style.border = "none";
textarea.style.outline = "none";
textarea.style.boxShadow = "none";
textarea.style.background = "transparent";
document.body.appendChild(textarea);
textarea.select();
document.execCommand("copy");
document.body.removeChild(textarea);
this.textContent = "Kopyalandı!";
//var that = this;
//setTimeout(function(){that.textContent = "Kopyala";}, 500);
}
</script> <script src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-56bef9a500e17bd2"></script> <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.bundle.min.js"></script></body></html>