Daha iyi PHP için beş araç

Yazar: Louise Ward
Yaratılış Tarihi: 5 Şubat 2021
Güncelleme Tarihi: 17 Mayıs Ayı 2024
Anonim
LVBEL C5 x BATUFLEX - HONG KONG (prod AKDO)
Video: LVBEL C5 x BATUFLEX - HONG KONG (prod AKDO)

İçerik

Uygulamalarımız üzerinde çalışırken, tercih ettiğimiz dil ne olursa olsun, bazen kodun kendisine çok fazla odaklanabiliriz. Gerçekten iyi bir geliştirme yaşam döngüsü, koddan çok daha fazlasıdır, hem bağımsız bir varlık olarak hem de konuşlandırıldığında canlı bir şey olarak uygulamanın kalitesini ve güvenilirliğini sağlamak için bir dizi destekleyici araç getirir. Bu amaçla, bu makale daha iyi PHP uygulamaları oluşturmak için beş araca bakıyor: Hoş bir şekilde sağlam ve yeni konuşlandırılmış sitenize göz kulak olmak için PHP Code Sniffer, PHP Documentor, Supervisord, Phing ve Uptime Robot.

01. PHP Kodu Sniffer

Bu araçlardan ilki, koda oldukça yakın başlar, çünkü PHP Code Sniffer, kodun verilen kodlama standartlarına uygunluğunu kontrol etmek için bir araçtır. Kendi yerleşik kuralları ile gönderilir veya çok kolay bir şekilde kendinizinkini yapabilirsiniz. PHP Code Sniffer kullanmak, projenizin tutarlı ve okunabilir olduğunu kontrol edebileceğiniz anlamına gelir. PHP boşluktan bağımsızdır, bu nedenle parantezlerin, yeni satırların ve girintilerin yerleştirilmesi kodun ayrıştırılma ve çalıştırılma şeklini etkilemez - öyleyse neden böyle bir araçla uğraşasınız ki?


Kodlama standartlarını uygulamak, minimum uyumluluk ve okunabilirlik standardı sağlamak anlamına gelir. Bu, tüm projenizin belirli yönergeleri izlediği ve okumayı ve bakımını kolaylaştırdığı anlamına gelir. Ortalama bir web uygulamasının bakım modunda ne kadar zaman harcadığı göz önüne alındığında, bu çok önemli bir özelliktir.

PHP Code Sniffer, PEAR aracılığıyla edinilebilir ve proje sayfası buradadır. PEAR'ın kurulu olduğunu varsayarsak (PEAR kullanmıyorsanız, kontrol edin, içinde bazı harika araçlar var!), Aşağıdaki komutu kullanarak kurabilirsiniz:

armut yükleme PHP_CodeSniffer

Kurulduktan sonra, projenizin kodlama standartlarını kurulu standartlardan birine göre hemen kontrol etmeyi deneyebilirsiniz. Neyin yüklü olduğunu görmek için şunu kullanın: phpcs -i komut satırından. Benim kişisel favorim Squiz standardı, PEAR'dan daha az acımasız ama yine de oldukça kapsamlı. Muhtemelen (projeniz halihazırda kodlama standartlarını benimsememişse) birçok uyarı olacaktır, bu nedenle bir özet rapor oluşturarak başlamayı yararlı buluyorum. Proje kodunu içeren dizinden aşağıdaki komutu çalıştırın:


phpcs --report = özet --standard = Squiz.

Şuna benzer bir çıktı göreceksiniz:

Çeşitli uyarıları gözden geçirmek ve düzeltmek biraz zaman alır, ancak çabaya değer, temiz ve okunabilir kod verme ve geliştiriciler olarak oluşturduğumuz şeyin kalitesine dikkat etme. Varsayılan olarak paketlenmiş kokular ihtiyaçlarınızı karşılamıyorsa, kendinizinkini yaratabilirsiniz! Bunu yapmak için bazı harika belgeler mevcuttur ve bu oldukça yaklaşılabilir bir görevdir, özellikle mevcut koklamalardan "seçip karıştırmaktan" memnunsanız.

PHP Code Sniffer, kodlama standartları uyumluluğunun durumu hakkında sabit bir geri bildirim döngüsü olması için otomatikleştirilmiş bir derleme sürecinin parçası olduğunda özellikle güçlüdür. Bunu daha sonra Phing'e baktığımızda tekrar ele alacağız.

02. PHP Belgeleyici

Gerçekte çalıştırmadan ölçümler yapmak ve koddan yapılar oluşturmak buna statik analiz denir. PHP Code Sniffer, statik analiz aracına bir örnektir ve PHP Documentor başka bir örnektir. PHP Documentor, kodunuzun yapısını, dosya sistemi yapısını, sınıfları, işlevleri ve aradaki her şeyi okur ve bundan belgeler oluşturur. Kodun çeşitli öğeleri hakkında daha fazla ayrıntı eklemek için belirli gösterimde ek yorumlar eklediğinizde daha da iyi hale gelir.


PHP Documentor için kurulum PEAR aracılığıyla yapılır, bu nedenle bir kez daha süper basittir. Bununla birlikte, PHP Documentor kendi PEAR kanalını çalıştırır, bu nedenle bu aracı kurmak için gereken iki komut vardır:

armut kanalı-Discover pear.phpdoc.org
armut yüklemek phpdoc / phpDocumentor-alpha

Yükledikten sonra, bir phpdoc program komut satırınızda kullanılabilir. Söylemek phpdoc hangi klasörle belgelenecek -t ve çıktı dosyalarının nereye yazılacağı -d. Ayrıca çıktının biçimini ve kullandığı şablonları özelleştirebilir, böylece uygunsa kendi kuruluşunuz için şablonlar oluşturabilirsiniz.

Örnek olarak, bir TimeZone sınıfından bu parçacığa bakın (açık kaynak olan Joind.in olay geri bildirim sitesinden alınmıştır, bu nedenle tüm kod GitHub'dadır):

? php

/**
* Etkinlikler / konuşmalar için veri / zaman sorunları ile çalışmak için sınıf kitaplığı
*
* PHP sürüm 5
*
* @category Joind.in
* @package Denetleyicileri
* @copyright 2009 - 2013 Joind.in
* @license http://github.com/joindin/joind.in/blob/master/doc/LICENSE JoindIn
* @link http://github.com/joindin/joind.in
*/
sınıf Saat Dilimi
{

/**
* Etkinliğin saat dilimi farkına sahip olduğu etkinlikteki geçerli saati alın
* / $ evt_offset saat
*
* @param integer $ evt_offset Zaman için ofset
*
* @ dönüş tamsayı
*/
public statik işlevi getEventTime ($ evt_offset)
{
$ burada = yeni DateTimeZone (tarih_default_timezone_get ());
$ hoffset = $ burada-> getOffset (yeni DateTime ("şimdi", $ burada));
$ off = (time () - $ hoffset) + ($ evt_offset * 3600);
$ off iade;
}

/**
* GetDatetimeFromUnixtime'ın biçimlendirilmiş bir sürümünü döndürür.
*
* @param integer $ unixtime Biçimlendirilecek Unix zamanı
* @param string $ timezone Zaman damgası için ayarlanacak saat dilimi
* @param string $ format Döndürülecek format
*
* @return dizesi
*/
public statik işlev formattedEventDatetimeFromUnixtime (
$ unixtime,
$ timezone,
$ biçimi
) {
$ datetime = static :: getDatetimeFromUnixtime ($ unixtime, $ zaman dilimi);
$ retval = $ tarihsaat-> biçim ($ biçim);

$ retval döndür;
}
}

PHP Documentor bu kod parçacığına uygulandığında (gerçek sınıfta yukarıda gösterilenden daha fazlası vardır), sonuç şuna benzer:

PHP Documentor'ı bir proje üzerinde yorum olmadan çalıştırmak bile projenin yapısı hakkında bir izlenim verir ve kullanıcıların orada ne olduğuna bakmalarını sağlar. Daha sonra eklenen tüm yorumlar çıktıda görünecektir. Bu araç, PHP Code Sniffer standartlarının çoğu PHP Documentor yorumlarının mevcut olmasını gerektirdiğinden, daha önce bahsedilen PHP Code Sniffer ile oldukça uyumludur. Yine, bu araç düzenli ve otomatik olarak çalıştırıldığında en iyi şekilde çalışır - API belgelerinin bir gecede veya her değişikliğin birleştirilmesinden sonra yenilenmesi yaygın bir durumdur, böylece güncel ve referans olarak yararlı kalırlar.

03. Süpervizör

Supervisord ("supervisor dee" olarak telaffuz edilir), belirli bir uygulama stili yazana kadar ihtiyacınız olmayan araçlardan biridir - ve o zaman onsuz nasıl yaşadığınızı hayal edemezsiniz. Web uygulamaları, gelen isteklere yanıt veren basit bir kod dizisi olarak yaşamlarına başlar. Daha karmaşık hale geldikçe, periyodik olarak veya belirli bir olaya yanıt olarak gerçekleştirilmesi gereken başka görevler de vardır. Peki Supervisord nasıl yardımcı olur?
Süpervizör, uzun süren süreçlerle ilgilenir. Bir şey çökerse, Süpervizör işlemi yeniden başlatmayı deneyecektir; Süreç hızla ölmeye devam ederse, Süpervizör pes edecek. Genelde kendi sistemlerimde Süpervizör altında çalışırken bulunabilecek birkaç ayrı şey var:

  • IRC botları
  • Bir kuyruktan işleri çeken çalışan komut dosyaları
  • Komut satırından istekleri sunan PHP / node.js uygulamaları

Supervisord'un çoğu platforma kurulumu çok kolaydır (örneğin, Linux sistemimdeki paket yöneticim aracılığıyla) ve SupervisorCTL adlı bir kontrol paneli ile birlikte gelir. Çalıştırdığımda şöyle bir şey görüyorum:

Buradan, çalışan bir grup işlem olduğunu (bazıları durdu) ve hepsinin ne kadar süredir çalıştığını görebilirsiniz (dün sunucumu yeniden başlattım!). Bu kontrol paneli bana işleri kontrol etme, çeşitli görevlerin günlüklenmiş çıktılarını görme ve bir çalışanı durdurma, başlatma veya yeniden başlatma yolu veriyor. Uzun süren süreçlerin izlenmesi zor olabilir ve bu araç bunu çok kolaylaştırır. Başvurunuz web sayfalarının sunulma aşamasının ötesine geçtiğinde, Supervisord arkadaşınızdır.

04. Phing

Phing, Ant ile aynı çizgide bir inşa sistemidir. Projenizde çeşitli işleri çalıştırmak için komutları çalıştırmanın çok basit, platformdan bağımsız bir yoludur. Birçok proje bunu dağıtım için kullanır, ancak test takımlarını çalıştırmak ve bu yazıda daha önce bahsedilen PHP Documentor ve PHP Code Sniffer gibi statik analiz araçlarını kullanmak gibi sizin için herhangi bir sayıda başka görevi de gerçekleştirebilir.

Phing, PEAR aracılığıyla kullanılabilir ve kendi PEAR kanalına sahiptir, böylece şu komutları kullanarak, gördüğümüz diğer PHP tabanlı araçlarla aynı satırlar boyunca kurabilirsiniz:

armut kanalını keşfedin pear.phing.info
armut yükleme phing / phing

Oraya vardığında, komut satırınızda yine yeni bir komutunuz var. Phing, XML'de yazılmış derleme dosyalarını okur (Ant sözdizimine çok yakın, ancak pek uyumlu değildir), bu da bir dizi "hedefi" veya Phing'in nasıl çalıştırılacağını bildiği komutları belirtebilir. İşte küçük bir örnek:

? xml version = "1.0" encoding = "UTF-8"?>
proje adı = "joindin" default = "build" basedir = ".">

target name = "phpdoc" description = "PHPDocumentor kullanarak API belgeleri oluşturun">
phpdoc2 destdir = "$ {basedir} / build / api">
fileset dir = "$ {kaynak}" />
/ phpdoc2>
/ target>

target name = "phplint" description = "Dosya kümesi üzerinde php -l çalıştır">
phplint haltonfailure = "doğru">
fileset dir = "$ {kaynak}">
desen kümesi>
isim = " * * / *. php" /> dahil
/ patternset>
/ fileset>
/ phplint>
/ target>

hedef isim = "yapı" bağlıdır = "phpdoc, phplint" />
/ proje>

Bu yine Joind.in projesinden bir pasajdır. build.xml dosya, Phing nasıl yapılandırılır. Sırayla her bloğu ele alırsak, önce varsayılan bir hedef adı tutan ve Basedir özelliği, daha sonraki elemanlarda kullanılabilmesi için. Proje etiketinin içinde bir dizi görev etiketi vardır. Bunlar, Phing'in çalıştırabileceği görevlerdir ve bunu yapmak için gereken tüm bilgileri içerir. Nihai hedef 'inşa etmektir'. Bu proje için varsayılan hedef olduğundan, Phing komutu bağımsız değişkenler olmadan çalıştırılırsa çalıştırılacaktır. Bu hedef diğer iki hedefe bağlıdır, bu da bunların da yürütüleceği anlamına gelir.

Phing, net bir komut satırı çıktısı sağlar ve daha sonra ona bağlanabilmemiz için belirli konumlarda depolanacak API belgeleri gibi yapılar üretir. Yukarıdakileri komut satırından çalıştırmak şu şekilde çıktı verir:

Çıktı pek bir şeye benzemiyor, ancak derleme dizinine ne yazdığına bakarsak, API belgeleri, diğer derleme hedeflerinden yapıtlarla birlikte tam olarak oradadır:

Phing, dağıtım için gerçekten kendi başına geliyor. Her hedefe bir dizi görev eklenebilir ve bunlar sırayla yürütülecektir. Phing, sürüm kontrolünden dışa aktarımların işlenmesi, dosyaların sıkıştırılması ve aktarılması ve SSH üzerinden komutların çalıştırılması dahil olmak üzere her türlü görevi destekler (belgelerine bakın).

Projenizin otomatik dağıtımı için bir Phing hedefi oluşturmak, potansiyel olarak riskli ve karmaşık bir süreci çok güvenilir hale getirmenin harika bir yoludur. Phing, wikideki talimatları takip etmek yerine, sitenizi yayına almak için gereken tüm adımları gerçekleştirir. Bunun, uygulamanızdaki çalışan komut dosyalarının Supervisord aracılığıyla yeniden başlatılmasını da içerebileceğini unutmayın!

05. Site sağlığının izlenmesi

Siteniz yayına girdikten sonra, işin bittiğini düşünmek cazip gelse de, her şeye göz kulak olmak da çok yararlıdır. İzleme, müşterinizin sizi arayıp sitesinin çalışmayı bıraktığında size haber vermesini beklemek anlamına gelmez. Bunun yerine, her şeyin yolunda olup olmadığını aralıklarla kontrol etmek için bir araç kullanırız ve iyi olup olmadığını bize bildiririz.

Bu alanda birçok seçenek vardır, ancak iki tür izlemeyi ele alacağız: bir sitenin çalışmadığını bildirmek için uyarı izleme ve verilen, ölçülen değerler için eşikler belirleyebileceğimiz trend izleme. Uyarı izleme, bir web sitesinde çok basit bir kontroldür. Site oradaysa, her şey yolunda. Site yanıt vermezse, bir sorun olduğu konusunda sizi uyaracaktır.

En basit izleme kurulumu, belirli bir URL'ye yönelik bir web isteğine başarılı bir HTTP yanıtı olduğunu belirler. Yanıt yoksa veya bir hata yanıtı alınırsa, site "çalışmıyor" olarak kabul edilir. Telefonla veya e-postayla gerçekleşmesi durumunda sizinle iletişim kurmak için genellikle bu tür bir izleme sunan hizmetleri yapılandırabilirsiniz. Bu tür hizmetlerin bir sağlayıcısı, sitelerin kolay izlenmesine izin veren ve ayrıca sitelerin kapalı olup olmadığını gösteren Uptime Robot'tur.

Bu hizmeti kullanarak içerik izlemeyi de kurabiliriz. Bu, yanıtta olması gereken bazı unsurların olup olmadığını kontrol eder. Bu, döndürülen içerik olduğunda ancak beklenen içeriğin olmadığı (örneğin, Apache'den 'çalışıyor!' Sayfasını gördüğünüzde) toplanmanıza yardımcı olur. Bu, izlenen sayfada görünmesi gereken bir metin kadar basit bir şey olabilir.

Bazen ping izlemeyi de görürsünüz, ancak bir makinenin ping'e yanıt vermesi, ancak HTTP yanıtlarını başarılı bir şekilde sunamaması oldukça olasıdır. HTTP izlemeyi tercih ederim.
Trend izleme, daha karmaşık ölçümlere bakar ve genellikle sunucunun kendisinde çalışan bir araç içerir. Bu, web sunucusu işlemlerinin sayısını, bellek kullanımını veya sayfaların yanıt süresini hesaba katabilir ve bunların zaman içinde nasıl değiştiğini izleyebilir. İzleme araçları, belirli bir veri parçasının belirli bir süre için çok yüksek veya düşük eğilimli olması durumunda, bir şekilde size bildirimde bulunulacağı eşikler belirlemenize olanak tanır. Bazen bu operasyon çalışanlarına çağrı yapmaktır, bazen köşedeki kontrol paneli ekranı renk değiştirir; Doğru yanıt tamamen başvurunuza bağlıdır.

06. Daha iyi araçlar

Araç ve süreçlerimizi iyileştirmek, zaman ve bazen de para yatırımı gerektirir. Bununla birlikte, iyi araçlar, bir geliştirme sürecinin her bölümünün sorunsuz ve tekrarlanabilir şekilde çalışmasını sağlar ve onları daha iyi hale getirmek için harcadığımız zamandan büyük getiri sağlar. Bu makale, halihazırda kullanmadığınız, ancak ağrısız bir geliştirme süreci için değerli olan bir seçkiyi içermeyi amaçlamaktadır.

Lorna, Birleşik Krallık, Leeds merkezli bağımsız bir web geliştirme danışmanı, eğitmen ve yazardır. O bir PHP uzmanıdır ve uygulamalarından, araçlarından ve çalışanlarından en iyi şekilde yararlanmak için ekiplerle birlikte çalışır. Lorna, Joind.in açık kaynak projesinde düzenli bir konferans konuşmacısı ve baş geliştiricidir.

Taze Yayınlar
Van Gogh gibi bir portre çiz
Daha Fazla Oku

Van Gogh gibi bir portre çiz

Hollandalı Po t-Empre yoni t re am Vincent van Gogh (1853-1890), kariyeri boyunca birçok otoportre yarattı - ancak bazıları o kadar bariz bir şekilde otoportreler değil. Örneğin, öl...
52 As görev yaptı
Daha Fazla Oku

52 As görev yaptı

Belki de pokerin popülerliğidir? Her ne olur a ol un, ta arımcı oyun kartlarının yeni de teleri tüm öfke gibi görünüyor. En onuncu u 52 Ace 2. ba kı ve Eduardo Recife, Pa...
The Art of Coco incelemesi
Daha Fazla Oku

The Art of Coco incelemesi

Muhteşem kon ept anatı ve bir dizi bilgilendirici içgörü ile dolu The Art of Coco, ölümden onraki hayata bir yolculuk için mükemmel bir arkadaştır. ahne arka ı g...