PHP ile Sınıflar ve Nesne Yönelimli Programlama (OOP)

in utopian-io •  7 years ago  (edited)

Ne Öğreneceğim?

  • OOP Nedir?
  • OOP Sınıf Yapısı
  • OOP Metotları

Gereksinimler

  • PHP
  • Linux

Zorluk

  • Orta Düzey

Screenshot_3.png

Eğitim İçeriği

PHP yazılım dili, tüm programlama dillerinde olduğu üzere nesne yönelimli programlamayı desteklemektedir. Geliştirilmek istenen yazılımı kısaltmak ve dizgesel hale getirmek için çok önemli ve çok sık kullanılan bir yöntemdir.

PHP4 versiyonunda nesne yönelimli yazılımın temelleri oluşturulduğundan eksikler çok fazlaydı ve PHP5 sürümüyle birlikte eksiklikler giderilerek OOP yapısı tekrar oluşturuldu. PHP5 sürümünden itibaren görünürlük, derslik soyutlama, final anahtar sözcüğü, büyülü yöntemler, nesne arayüzleri, nesne kopyalama ve tür dayatma gibi mevzular eklendi.

OOP Nedir?

OOP, Object Oriented Programming kelimesinin baş harflerinden oluşan bir programlama yöntemidir. Türkçe karşılığı nesne yönelimli programlama olarak ifade edilebilir.

OOP, birbiri ile alakalı ve dizgesel olarak çalışabilecek kod parçalarını bir arada tutarak, yazılımın bir tüm olarak çalışmasını sağlar. OOP mimarisi ile geliştirilecek sistem parçalara ayrılarak, parçalar arasında illişki kurmaya olanak sağlar.

Temel Kavramlar

Nesneler, kendi içerisinde tanımlanan değişken ve ek fonksiyonlardan oluşur. Bir nesne içinde tanımlanan birime özellik, nesneye ait fonksiyonlara ise davranış yada metod adı verilir. Dersliğin üyesi olarak ifade edildiğinde ise bu özellik veya metod olabilir.

Sınıf Yapısı

Bir derslik oluşturmak için öncelikle sınıf üyelerinin (özellik ve metotlar) birbiri ile ilişkili olmasına dikkat edilir. Sınıfın yapısı gereği, eğer birbirinden bağımsız özellik ve metotlar kullanırsanız, aslına bakarsanız derslik yazmanın bir anlamı kalmaz.

<?php
class ilkSinif
{
      #özellik
public $birOzellik;
      #davranis
public function birDavranis()  {
echo 'Davranis Calisti';
             }
}
?>

Yukarıdaki sınıf örneğinde, sınıf ilkSinif ismiyle oluşturulmuştur. Sınıf içinde birOzellik ismiyle değişken ve birDavranis ismiyle metod tanımlanmıştır.

Sınıf Çağırma (Örnekleme)

Bir dersliği çarpıtmak için new anahtar sözcüğü kullanılır. Aslında sınıfların bir çeşit veri türü bulunduğunu düşünürsek, çağırdığımız derslik tipinde bir değişken tanımlıyoruz diyebiliriz.

<?php
$nesne = new ilkSinif();
?>

Yukarıda yer edinen kodları dersliğin hemen altına yazarak tanımladığınız sınıftan bir örnek alabilirsiniz. Sınıftan örnek aldıktan sonrasında erişim izni olan özellik ve metotları kullanabiliriz. Derslik özellikleri $isim olarak tanımlansa da bu özelliği dışarıdan kullanırken $nesne->$isim olarak değil, $nesne->isim olarak kullanmanız gerekmektedir.

<?php
$nesne = new ilkSinif();
$nesne->isim = 'Ali';
echo $nesne->utopian();
?>

Yukarıdaki örnekte değişkenin içinde tanımlanan isim özelliğine Ali değeri yükleniyor ve yine değişken için erişim iznimiz olan utopian adlı metodu çalıştırıyoruz.

Kurucu ve Yıkıcı Metotlar

Bir derslik örneklendiğinde İlk olarak çalışan metod kurucu (construct) metodlardır. Sınıf üzerinde aslabir işlem yapmasanız dahil, örnek almış olduğunız anda bu metod otomatik olarak çalışır. Aynı şekilde derslik ile olan bağlantınız sonlandığında ise, yıkıcı (destruct) metodu otomatikman çalışır. Kurucu ve yıkısı metotların nasıl tanımlandığını öğrenmek ve bir sınıftan örnek alındığında otomatik olarak çalışmış olduğunı anlamak için aşağıdaki örneği inceleyip çalıştırarak deneyebilirsiniz.

<?php
class ilkSinif
      {
           #kurucu fonksiyon
function __construct() {
echo 'Kurucu fonksiyon çalıştı.';
   }
           #yıkıcı fonksiyon
function __destruct() {
echo 'Yıkıcı fonksiyon çalıştı';
       }
  }
           #nesne örnekleme
$nesne = new ilkSinif();
?>

Yukarıdaki örnek dersliği yazıp çalıştırdığınızda kruucu fonksiyon çalışacaktır. Eğer bu sınıf üzerinde işlem gerçekleştirmiş olsaydık, bu işlemler gerçekleştirilecek ve PHP yorumlayıcısı artık dersliğin kullanılmadığını anladığında yıkıcı fonksiyonu çalıştıracaktı.

Kurucu metotlar; çoğu zaman derslik çapırıldığı esnada, sınıfa ilişkin özelliklerin için ilk değerler yüklenir ve lüzumlu görülürse, bazı metotlar tetiklenerek çalıştırılır. Yıkıcı metotlar ise, derslik kullanımını sonlandığinde özelliklerin silinmesi ve yine ihtiyaç halinde bazı metotların çalıştırılması için kullanılabilir.



Posted on Utopian.io - Rewarding Open Source Contributors

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

Thank you.

Hey @deathwing, I just gave you a tip for your hard work on moderation. Upvote this comment to support the utopian moderators and increase your future rewards!

Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://www.orhanbhr.com/sinif-cagirma-ornekleme-oop/

Thank you. It's good to see this.

  ·  7 years ago (edited)

Nevermind

However, the rule has been shared before committing. So it must be valid!

No, rule change was 2 days ago : https://steemit.com/utopian-io/@utopian-io/utopian-rules-update-8-dropped-crowdin-support-english-only-and-more

He wrote this yesterday, hence he wrote an article that was not in accordance with the rules when publishing his contribution.

That's incorrect howo. The rules were announced 2 days ago, but the post also states that they only went live at 6 PM CET 02.02.2018, please, review this post and all the posts you've rejected under new rules.

Yep, realized that afterwards, consider the above comment void.

Hey @sedatyildiz I am @utopian-io. I have just upvoted you!

Achievements

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x