RockLife Rock Metal Forum
Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
AnasayfaAnasayfa  AramaArama  Latest imagesLatest images  Kayıt OlKayıt Ol  Giriş yapGiriş yap  

 

 PHP Nedir ?

Aşağa gitmek 
YazarMesaj
Tatlı-Cadı
Özel Üye
Özel Üye
Tatlı-Cadı


Mesaj Sayısı : 798
Başarı Puanı : 2236
Rep Puanı : 1
Kayıt tarihi : 28/05/09
Yaş Yaş : 33
Nerden : Almanya
İş/Hobiler İş/Hobiler : Golf

PHP Nedir ? Empty
MesajKonu: PHP Nedir ?   PHP Nedir ? Icon_minitimePaz Ekim 24, 2010 8:32 am

PHP Nedir
PHP şu şekilde tanımlanabilir:
*Sunucu tabanlı (server sided),
*HTML ile bir arada kullanılabilen (HTML embedded),
*Script dili.

PHP'nin gelişim süreci:
*PHP-FI (Dinamik HTML üretimi, satır satır kod işletimi, CGI modeli çalışma)
*PHP-3.x (Apache'ye modül olarak gömülebilme, yerleşik veri tabanı arabirimleri)
*PHP-4.x (Ön derleme ve optimizer ile ara kod iyileştirme, eklentiler)

Çalışma Modeli
* Veri tabanı sistemi ile evrensel ve hafif istemciler arasında yer alır.
* Hem HTML üretimi, hem de uygulama mantığı PHP motoru üzerinde gerçekleşir.
* Genel olarak Web tarafı ağır basan üç katmanlı yapıyı esas alır.

Neden PHP?
- Verimlilik
- Bakım kolaylığı
- Taşınabilirlik
- Uyumluluk
- Performans
- Hızlı Gelişim ve Yaygınlık
- Ekonomik

Verimlilik
Web uygulamaları hızlı geliştirme gerektiren türde uygulamalardır. Bu nedenle bu alanda script dilleri ön plana çıkmışlardır.
* Kod boyu kısalmalı. PHP web uygulamaları için yazılabilecek kod sayısını en dengeli düzeye çekmiş gibi görünüyor. PHP, yapmanız gereken işi en kısa yoldan yaparken işlevselliği de sınırlamıyor. İşlevselliği çok iyi olmasına karşın Java servletleri yazılması gereken kod boyunu aşırı artırıyor.
* Hazır araçlar. PHP'nin fonksiyon kütüphanesi oldukça geniş. 4.0 versiyonunda 1729 fonksiyon tanımlı. Mail, FTP, LDAP ve HTTP gibi protokollerini kullanabilmek için RFC okumanıza gerek yok. Veritabanlarına erişim fonksiyonları işi kolaylaştırmış.Allaire firmasının Cold Fusion ürününde kullanılan CFML (Cold Fusion Markup Language) script dili kısa ve okunurluğu iyi olmasına karşın sadece 60 tag ve 200 fonksiyon ile sınırlanmış. Aynı şekilde ASP ile hazır gelen araçlar da oldukça sınırlı.
* Yeniden kullanılabilirlik. PHP, nesneye yönelik programlama için destek veriyor. PHP kullanıcılarının hazırlamış olduğu kütüphaneler kullanılabileceği gibi kendi kütüphanelerinizi oluşturup kullanmanız da mümkün.
Bakım Kolaylığı
Web uygulamaları çok sık güncellenirler. Her defasında sıfırdan kod yazmamalısınız. Kod bakımı ve değiştirilebilmesi kolay ve hızlı yapılabilmelidir.
* Okunurluk. PHP kodunun okunurluğu oldukça yüksek. Kısa olmalarına karşın Perl kodları uzman olmayan programcılar tarafından kolay okunamıyor. Tam tersine kodlama gereksinimi fazla olan java servletlerinde de geliştiricilerin birbirini miras alan sınıfları takip ederken kaybolması muhtemeldir. Ekibiniz her zaman perl veya java uzmanı programcılardan oluşmayabilir.
* Modülerlik. PHP'nin include() ve requires() gibi fonksiyonları kodunuzu küçük ve mantıklı parçalara ayırmanıza yardım ediyor. Nesneye yönelik programlama teknikleriyle de modülerliği artırabilirsiniz.
* Sunum ve iş mantığının ayrılması. PHPLib kütüphanesi veya kendi oluşturabileceğiniz template işleyici fonksiyonlar ile de kullanıcı arabirim tasarımını, iş mantığından ayırmınız çok kolay. Böylece web tasarımcıları koddan bağımsız olarak görünüme yoğunlaşırken, programcı görünümle hiç uğraşmadan arka planda çalışması gereken program mantığı üzerine yoğunlaşabilir.

Taşınabilirlik
Platformdan bağımsızlık sadece Java'nın sloganı değil. Geliştirdiğiniz uygulamaların değişik işletim sistemleri ve değişik web sunucuları üzerinde çalışabiliyor olmasını istemez misiniz? Bu konuda PHP'nin, java servletleri, JSP ve Perl dışında rakibi yok.
* Web Sunucu Desteği. Yeni web sunucu arabirimi (Server API/SAPI) ile oldukça iyi bir soyutlama gerçekleştiriyor.
* Apache (Apache Software Foud.) § iPlanet (Sun-Netscape Alliance) § IIS (Microsoft) § AOL Web Server (America Online) § Zeus (Zeus Tachnology) § Xitami (iMatix) § Roxen § Stronghold (C2Net) § OmniHTTPd (Omnicron Tech.)
* İşletim Sistemi Desteği. Desteklediği sunucuların çalıştığı pekçok işletim sisteminde de sorunsuz çalışır.
* Tüm Linux, Unix ve BSD türevleri § MS Windows95-98-2000Prof/Server § OS/2 § MacOS

Uyumluluk
PHP, çok sayıda açık sistem ve protokol ile birlikte çalışabildiği gibi hem de pek çok özelleşmiş sistem için yerleşik (native) arabirim desteği sunmakta.
* Açık Sistem Protokolleri
* HTTP/HTTPS § FTP § LDAP § SMTP § IMAP, POP3 § NNTP § SNMP § Socket Arabirimi (TCP/IP)
* Yerleşik Veri Tabanı Arabirimleri
* MySQL § mSQL § PostgresSQL § BerkeleyDB § MS-SQL § Interbase § Oracle § Sybase § DB/2
* Açık Sistem Teknolojiler
* ODBC § OpenSSL / X509 Sertifikaları § XML § PDF

Performans
*8 saniye kuralı. Web'de ziyaretçiler genellikle yüklenmesi 8 saniyeyi geçen sayfalardan vazgeçerler. Buna karşın çoğu kez bant genişliğiniz sınırlıdır. Toplam 35KB büyüklüğünde olan bir sayfa 56Kbps'lik bir modemle 7-8 saniyede çekilir. Bu süreye sunucu cevap süresi eklenecektir.
* Cevap süresi (response time). Normalde web sunucusu dinamik bir sayfada script işletimi bitene kadar cevap göndermez. Bu sürenin de 1-2 saniyeyi aşmaması zorunludur.
* CGI kullanan uygulamalar işletim sistemi tarafından görevlerin paralel olarak hafızaya yüklenmesi ve bunlar arasında geçişler gerektirdiği için CPU, RAM, zaman harcaması fazladır ve tutarsız davranırlar. Her seferinde yeniden veri tabanına bağlantı gerektirirler.
* Server API'si kullanan modüller ise CGI'ya göre 15-20 kat hızlı çalışabilirler. PHP'nin SAPI kullanan modül versiyonu da bu avantajdan yararlanır.
* Zend optimizer ile ara kod iyileştirmesi kullanılarak buna ek olarak %40 - %100 hızlanma elde edilebilir.
* Yerleşik (native) veritabanı desteği verdiği için ODBC kullanan sistemlere göre de hızlıdır.
* Sürekli veritabanı bağlantıları (persistent connections). Java servletlerindeki connection pooling mantığını programcıya saydam tutarak kullanır.
* PHP standart görevler için ASP'de olduğu gibi COM nesneleriyle iletişim kurmak zorunda kalmaz. Bu tür işlevler sunucunun kendi hafıza alanı içinden çağrılır.
* Önbellekleme. Zend Cache ve benzeri yazılımlar ile scriptler derlenmiş olarak hafızada tutulabilir.
Hızlı Gelişim ve Yaygınlık
* Açık kaynak kodlu. Bir çok ülkeden gönüllü geliştiricilere sahip. Hatalar çok çabuk bulunup düzeltiliyor. Pek çok web sunucusu ve işletim sistemine port edilmiş durumda. Kendi sisteminiz üzerinde PHP'den kaynaklanan bir sorun olursa en kötü durumda PHP koduna müdahale etme şansınız var.
* Dünya üzerinde PHP kullanan domain sayısı 5.747.237, IP adresi sayısı ise 882.439 (Netcraft).
* Apache üzerinde en yaygın kullanılan modül (Security Space / E-Soft Inc.).
Module Mar 2001Count Mar 2001% Feb 2001Count Feb 2001% Growth%
PHP 588124 38.68% 562725 37.82% 2.28%
FrontPage 289505 19.04% 285097 19.16% -0.63%
mod_ssl 194166 12.77% 178694 12.01% 6.33%
perl 186722 12.28% 178713 12.01% 2.24%
OpenSSL 179255 11.79% 163540 10.99% 7.26%
ApacheJServ 63655 4.19% 61918 4.16% 0.60%

Ekonomik
* Tüm eklentileri ile birlikte ücretsiz.
Gelişmiş Özellikler
* Değişebilir Değişkenler
* Kurallı İfadeler
* Semafor ve Shared Memory
* Yerleşik Oturum Desteği
* Çıktı Yastıklama
* Serialization
* Java Desteği
* Windows COM Desteği
* XML ve SOAP Desteği
* Şifreleme ve OpenSSL

Değişebilir Değişkenler (Variable Variables)
PHP, Perl ve JavaScript'de olduğu gibi değişkenlerin çalışma anında tip değiştirebilmesine (type juggling) olanak sağlıyor. Bunun ötesinde değişkenler üzerinde çalışırken çok daha fazla esnekliğe sahipsiniz.
$x="elma";
$$x="armut";

echo ${$i}; // ekrana 'armut' yazar
echo $elma; // ekrana 'armut' yazar
Aynı özellik fonksiyonlar için de kullanılabiliyor:
if(...)
$funct="ImageCreateFromPNG";
else
$funct="ImageCreateFromJPEG";

$funct(...); // Çağrılacak fonksiyonu çalışma anında belirledik
Kurallı İfadeler
PHP kurallı ifadeleri (regular expressions) Perl kadar güçlü kullanabilir. Örneğin bir metindeki tüm 'elma' ları 'armut' yapabilirsiniz:
$metin = preg_replace("/elma/i", "armut", $metin);
Aynı sonucu java servleti kullanarak almak isteserseniz:
String str1 = new String("elma");
String str2 = new String("armut");
int x = metin.indexOf(str1);
while(x != -1) {
metin = new String(data.substring(0, x) +
str2 + metin.substring(x + str1.length()));
x = metin.indexOf(str1);
}
Pratikte ise bundan çok daha karmaşık metin içinde arama, değiştirme türü işlemlere gereksinim duyulur.

Semafor ve Shared Memory
§ Semafor kullanarak,
§ Paralel çalışacak olan scriptleriniz arasında zaman uyumlama yapabilir.
§ Eş zamanlı erişmemeleri gereken kaynakları kilitleyebilirsiniz.
§ Shared memory kullanarak,
§ Hafızada scriptlerinizin erişebileceği ortak alanlar tanımlayabilir,
§ Bu alanlara her scriptin başında atanması gereken değişken değerlerini veya arama sonucu gibi dinamik ürettiğiniz verilerinizi koyarak önbellek (cache) gibi kullanabilirsiniz

Yerleşik Oturum Desteği
Web için uygulama geliştirirken karşılaşılan en büyük sorun uygulamanın o anki durumunu (state) belirlemektir.
İstemci tarafına oturum bilgilerini atmak ve tekrar almak kolaydır. Çünkü PHP ile,
§ HTTP başlık (header) bilgilerine erişebilir,
§ Cookie'leri normal değişkenler gibi kullanabilir,
§ POST ve GET metodları ile gönderilmiş bilgileri değişkenler içinde hazırlanmış olarak kullanabilirsiniz.
Tüm bu işleri programcıya daha saydam hale getirmek için PHP'yle birlikte oturum fonksiyonları da geliyor. Böylece,
§ Programcı oturumları takip etmek için cookie'ler ile uğraşmak zorunda kalmıyor.
§ İstemci cookie desteği vermiyor ise oturum bilgisi otomatik olarak URL içinde taşınıyor.
Çıktı Yastıklama (Output Buffering)
§ Normalde echo() veya printf() ile oluşturulan çıktı hemen web sunucuya aktarılır.
§ Çıktı aktarıldıktan sonra PHP ile header() veya setcookie() gibi fonksionlar ile HTTP başlığına müdahale etmeye kalkışılırsa hata mesajı alınır.
§ Çıktı yastıklama kullanılarak scriptin çıkışına göndereceği veri bloke edilip silinebilir veya istendiği zaman gönderilebilir.
§ Böylece kodun herhangibir yerinde HTTP başlığına müdahale edileceği zaman önceden çıktı üretilip üretilmediği gibi kontrollere gerek kalmıyor.
§ 'Location' response headeri kullanarak sayfalar arası geçiş mekanizması kullanan programcıların iş akış mekanizması üzerine daha fazla yoğunlaşabilmelerine olanak sağlar.
§ Üretilen çıktının boyu gibi bilgileri kullanabilirsiniz. Sıkıştırılmış web sayfaları destekleyen tarayıcılara havada sıkıştırılmış çıktılar üretebilirisiniz

Serialization
§ serilize() ve unserialize() fonk4siyonları ile uygulamanız içindeki değişkenlerin ve değerlerinin, saklanabilir (storable) byte dizilerine dönüştürülmüş biçimini elde edebilirsiniz.
§ Uygulamanızda kullandığınız değişkenleri yapısallığını bozmadan dosyada, veritabanında, paylaşılabilir hafızada veya cookie olarak tarayıcıda saklayabilirsiniz.
§ Aynı veya farklı PHP uygulamaları arasında kolayca veri aktarabilirsiniz.
Java Desteği
§ PHP ile Java'da hazırlanmış programları kullanabilirsiniz.
§ API arabirimini bildiğiniz sürece javada yazılmış bir programın sınıflarına PHP içinden erişebilir ve PHP ile yaratılmış gibi kullanabilirsiniz.
public class Hello {
public Hello() {}
public String HelloStr(String name) {
return "Merhaba " + name;
}
}
Yukarıdaki java sınıfını derledikten sonra aşağıdaki gibi PHP scripti içinden kullanabiliyoruz:
<?
$myHello=new Java("Hello");
echo $myHello->HelloStr("Mustafa");
?>
§ PHP-Java ikilisini kullanarak RMI ve CORBA kullanan dağıtık uygulamalar geliştirmeniz de mümkün hale gelmiş oluyor.

Windows COM Desteği
§ PHP içinden Windows ortamında COM arabirimi olan nesnelere erişip normal PHP nesneleri üzerinde çalışıyormuş gibi kullanabilirsiniz.
<?
$word = new COM("word.application") or die ("word başlatılamadı");
$word->Visible=1;
$word->Documents->Add();
$word->Selection->TypeText("Deneme...");
$word->Documents[1]->SaveAs("deneme.doc");
$word->Quit;
?>
§ Örneğin Excel veya Word dökümanları üzerinde çalışabilir, Access veritabanlarına erişebilirsiniz.
§ COM ve DCOM arabirimi kullanan tüm Windows uygulamalarını kullanabilirsiniz
XML, XLST Desteği
§ XML büyük veri yığınları ile uğraşma ve uygulamalar arası veri aktarımı gibi konularda önümüzdeki günlerde daha çok duyacağımız bir teknoloji.
§ PHP ile XML (Extensible Markup Language) dökümanlarını çözümletebilirsiniz. XML kullanarak konu bazlı arama araçları tasarlanabilir.
§ XLST (Extensible Style Sheet) ve XML kullanarak, sunum bilgisi içermeyen XML dökümanlarınızın görünümünü esnek bir şekilde belirleyebilirsiniz. Bu web sitelerinde içerik ve sunumu birbirinden ayırmak için uygun bir altyapı sağlar.
§ XML-RPC türü uygulamalar geliştirebilirsiniz. Bu sayede dağıtık uygulamalar birbiriyle standart bir şekilde haberleşebilir.
Şifreleme ve OpenSSL
§ PHP ile tek yönlü şifreleme ve özet üretme fonksiyonları kullanabilirsiniz (MD5, Crypt, ... )
§ PHP simetrik çalışan pek çok şifreleme algoritmalarını da destekliyor (DES, DES3, Blowfish, IDEA, ...)
§ PHP 4.0 versiyonunda OpenSSL'i de dahil ederek asimetrik şifreleme (RSA, DSA) metodlarını da destekliyor.
§ Bu bağlamda X509 sertifikalarını da kullanabilirsiniz.
§ Böylece uzak noktalar arasında güvenli veri aktarımı gerçekleştirebilirsiniz
Ulakbim'de PHP
§ Site genelinde statik sayfalar için PHP ön işleyicisi (parser).
§ WebManager
§ Ulusal Belge Sağlama Projesi
§ Süreli Yayınlar Projesi ve diğerleri
PHP Ön İşleyicisi
§ Ulakbim sitesinde içerik ve görünümün birbirinden ayrılabilmesi,
§ Site genelinde, tek bir noktadan yönetilebilecek tutarlı bir görünüm elde etmek için geliştirildi.
§ Bunu yapabilmek için statik sayfalarda SSI benzeri kendimize özel taglar tanımladık.
§ Alt yapı olarak Apache sunucusu üzerinde, DSO modülü olarak yüklü PHP kullandık. Aynı makinada MySQL veritabanı sunucusu da bulunmakta ve herhangibir performans kaybı söz konusu olmamaktadır.
§ Sonuçta tüm Ulakbim sitesi arka tarafta dinamik olarak üretilmektedir.
§ Ayrıntılı bilgi için: [Linkleri görebilmek için üye olun veya giriş yapın.]

Ulusal Belge Sağlama Projesi
§ CABIM'in sunduğu belge sağlama hizmetinin internet ortamına aktarılmasını hedefleyen büyük çaplı bir proje denebilir.
§ Büyük bölümü PHP ile ve bazı batch işlemler Perl ve Shell Script kullanılarak yapıldı.
§ Kodlama aşaması az sayıda programcı tarfından 3 ay gibi bir sürede tamamlandı.
§ MySQL veritabanı kullanmakta ve veri güvenliği için her gün replication yapılıyor.
§ Internete açık tarafında müşteri modülü,
§ Intranet'imize bakan tarafında ise belge sağlama hizmeti veren görevliler için modül içeriyor.
§ Katalog taramalarında da PHP kullanılıyor.
§ Yakında güvenli bağlantı (HTTPS) kullanarak kredi kartı ile ödeme kabul eder hale getirilecek. Bu kısımda yine PHP-Perl ikilisi kullanılıyor.
§ Ayrıntılı bilgi: (Belge Sağlama)
Süreli Yayınlar Projesi ve Diğerleri
§ Süreli Yayınlar Projesi, Ulakbim tarafından ısmarlanan süreli yayınların takibi için kütüphane otomasyon uygulamasıdır. Proje, kütüphane otomasyonu projesinden öteye götürülebilecek şekilde oluşturulmaya çalışılıyor. Henüz geliştirme aşamasında.
§ Ulakbim forumları için kullanıcı yönetim modülleri. Ücretsiz dağıtılan Phorum yazılımına bir eklenti olarak geliştirildi. Ulakbim'in kurumsal kullanıcılarıyla çalışma grupları çerçevesinde yakın çalışabilmesi için tasarlandı. Sadece üye kullanıcıların erişmesi sağlanıyor. Intranet tarafında moderatörler için yönetim ekranlarına da sahip. Kullanılıyor.
§ WebAccess projesi, Ulakbim'in ihtiyaç duyduğu veritabanı kullanan küçük çapta uygulamalar için otomatik veritabanı ve form üretmek/değiştirmek için geliştirildi. Microsoft Access benzeri bir uygulamanın Web versiyonuna da denebilir. Birden çok veritabanını kullanabilmek için class olarak bir soyutlama tabakası kullanıyor. Proje çeşitli sebeplerle tamamlanamamış olmasına rağmen şu an küçük çapta veritabanı uygulamaları için sorunsuz bir şekilde kullanılmakta.
§ Şu anda Ulakbim'de veritabanları, dosyalar ve LDAP sunucusu gibi kaynaklar üzerinde arama, listeleme ve değiştirme yapan türde pek çok uygulama PHP ile geliştirilmiş durumdadır.

Açık Kaynak Kodlu Projeler
PHP ile bir uygulama geliştirirken daha önce bu konuda açık kaynak kodlu bir çalışma olup olmadığına bakmalısınız. Yapacağınız iç çok özelleşmiş değilse var olan uygulama üzerinde ufak değişiklikler yapmak büyük zaman kazancı sağlayabilir.
§ Midgard. PHP uygulaması değil ancak PHP uygulamaları geliştirmek için framework sunan ileri bir içerik yönetim uygulaması. PHP'ye ve Apache'ye modül olarak ekleniyor. İleri düzeyde XML kullanıyor.
§ PHPlib. Oturum desteği, kullanıcı doğrulaması, templateler ve daha pekçok şey için hazır kütüphane (framework).
§ Phorum. Web forumları.
§ Horde-IMP. Web mail.
§ PHPNuke, eZ publish. Portal, içerik yönetimi.
§ The Exchange. E-commerce.
Bağlantılar
§ PHP (PHP: Hypertext Preprocessor). PHP ekibi.
§ Apache (Welcome! - The Apache Software Foundation). En çok kullanılan, saplamlık ve hızı kanıtlanmış web sunucusu.
§ MySQL (MySQL AB :: The world's most popular open source database). Web için sağlam, hızlı veritabanı.
§ Zend (Zend - The PHP Company - Zend.com). PHP 4.0 motorunu üreten şirket. Bu motoru ve Optimizer'ini ücretsiz dağıtıyor.
Sunumlar
§ LDAP Tabanlı Dizin Servisleri ve Akademik Uygulamaları
(Akademik Bilişim 2002 Konferansı, 6-8 Şubat 2002, Konya Selçuk Üniversitesi),
§ PDF sürümü (1,17 MB)
§ PHP'ye Genel Bakış (İnternet Haftası 19 Nisan 2001, Kayseri)
§ PHP ile Web Uygulamaları Geliştirme (Web Eğitim Kampı, 26-30 Haziran 2000, Kuşadası)
§ PHP ile Sunucu Tabanlı Uygulamalar (UKKT, 8-9 Şubat 2000, Isparta)
Çalışmalar
§ Java ile Nesneye Yönelik Programlama (2001)
Sayfa başına dön Aşağa gitmek
https://rocklife.forum.st
 
PHP Nedir ?
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Host Nedir?Reseller Nedir?VPS Nedir?
» sabır nedir - sabrın anlamı - sabretmek nedir
» Din Nedir?
» MCP Nedir?
» ASP NEdir?

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
RockLife Rock Metal Forum :: Herşey Burda :: Webmaster&Webtasarım :: Programlama :: C ++ , C # , PHP-
Buraya geçin: