İçeriğe geç

PHP – CLI Kullanımı

PHP CLI yani Command Line Interface, PHP’nin komut satırından çalıştırılması veya komut satırına göre yazılmış / yorumlanmış şeklidir. PHP bir web programlama dili dolayısıyla PHP’yi komut ekranından çalıştırmak biraz abes gibi görünebilir. Lakin PHP, Python, Ruby veya Java gibi dillerde olduğu gibi komut satırından çalıştırılabilinir bir yapıya sahiptir.

PHP CLI, normal bir kullanımın dışında bir durum olduğu için bazı istisnaları var. Fakat yazdığınız kodlar yine aynı kodlar olacaktır.

Peki neden PHP – CLI? PHP – CLI işletimi normal bir web işletiminden daha hızlı çalışmaktadır. Bunun dışında; PHP – CLI, özellikle shell (kabuk) ve masaüstü uygulamalar geliştirilmek için kullanıma sunulan bir yapı. Bu yazıyı yazmamın amacı; planladığım makale listemdeki bazı yazıların PHP – CLI ile doğrudan bağlantılı olması. O halde hazırsanız başlayalım!..

Öncelikli olarak; PHP’nin PATH’e eklenmiş olması gereklidir. Bunu anlamanın en kısa yolu; CMD (Windows) veya Console (GNU / Linux)’u açarak aşağıdaki basit satırı yazmaktır.

$ php --version
# veya
$ php -v

Yukarıdaki satırdan sonra; PHP versiyonunu belirten bir ibare çıkması durumunda PHP, PATH’e eklenmiş demektir. Aksi halde; PHP’i PATH’inize eklemeniz gerekmektedir.

PHP’i PATH’inize eklediğinizi varsayarak devam edelim. Komut ekranında;

$ php -h

yazmanız durumunda, kullanılabilecek komut dizileri ekranınıza gelecektir. Buradaki çıktıyı detaylı olarak incelemenizi tavsiye ederim. Çünkü ilerleyen zamanlarda kullanmak isteyebilirsiniz.

$ php -a

Interactive Shell (Etkileşimli Kabuk)‘e geçebilirsiniz. Yani; Python veya Ruby’de olduğu gibi PHP komut satırlarınızı çalıştırabilirsiniz. Örneğin;

php > echo('Hello World!')

yazdığımızda doğal olarak bize;

Hello World!

Çıktısını verecektir.

Komut ekranında PHP kodlarınızı yazıp işletebilirsiniz. Bunun dışında; .php uzantılı dosyalarınızı da çalıştırabilirsiniz. Örneğin elimizde; hello.php isim bir dosya olduğunu varsayalım. Bu dosyayı aşağıdaki şekilde çalıştırabiliriz.

$ php hello.php

hello.php dosyamız işletilecektir. Burada GNU / Linux kullanıcıları dosyalarının çalıştırma iznine dikkat etmelilerdir. chmod +755 ile dosyanızı basit bir şekilde çalıştırma izni verebilirsiniz.

Bir betiğin; herhangi bir ortamda çalıştırıldığını anlamak için bir kaç yöntem var. Bu yöntemlerden bir tanesi de ; PHP_SAPI sabitini kontrol etmek. Bu sabit değişken çalıştırıldığı ortama göre değeri değişir. Örneğin; komut satırında çalıştırılmışsa, cli değerini alacaktır. Ayrıca; bu sabit değişkenin değeri her zaman string (metinsel) yapıdadır. Örneğin; PHP_SAPI sabit değişkenimizin içeriğini yazdıran bir betik hazırlayalım ve hem web ortamında hem de komut ortamında değerlerine bakalım. Betiğimiz aşağıdaki gibi olsun.

<?php
echo(PHP_SAPI);

Şimdi bu betiğimizi web ortamında çalıştırdığımızda;

apache2handler

ve komut ekranında çalıştırdığımızda;

cli

şeklinde iki farklı çıktı alırız.

Daha önce de belirttiğimiz gibi; PHP_SAPI sabit değişkeni çalıştırıldığı ortama göre farklı değerler alır. Bu değerler, php.net adresinde belirtildiğine göre; aolserverapacheapache2filterapache2handlercaudiumcgicgi-fcgiclicontinuityembedisapilitespeedmilternsapiphttpdpi3webroxenthttpdtux ve webjames değerleridir.

PHP_SAPI sabit değişkenin muadili olara; php_sapi_name() metodu da kullanılabilir.

<?php
echo(php_sapi_name());

PHP_SAPI sabit değişkeni ve php_sapi_name() metodunun da değerleri aynıdır. İki seçenekten herhangi birisi kullanılabilinir.

Bizim amacımız; PHP – CLI olduğu için bu iki seçenekten dönen değerlerin cli olması gereklidir. Öyleyse if…else yöntemiyle gelen değeri kontrol edebiliriz.

<?php
if (PHP_SAPI === 'cli') {
	# yapilacaklar...
} else {
	# yapilacaklar...
}

Yukarıda da görüldüğü üzere; cli ortamında çalıştırılması durumunda ve farklı bir ortamda kullanılması durumunda yapılacak olanları yazabiliriz. Örneğin; sadece komut ortamında çalıştırılmasını istediğiniz satırlar olabilir veya tüm betiğin komut ekranında işlem görmesini isteyebilirsiniz. Böyle durumlarda bu iki seçenekten herhangi birisi tercih edebilirsiniz.

Değinmek istediğim bir diğer nokta da komut ekranından değerlerin gönderimi. Bir PHP betiğini çalıştırırken; dışarıdan değerler vererek çalıştırabilirsiniz. PHP, komut ekranında işlem görürken öntanımlı olarak; $argv değişkenini ekler. Böyle bir öntanımlı değişken web ortamında yoktur.

$argv öntanımlı değişkeninin içeriğine bakalım.

var_dump($argv);

Şimdi de betiğimizi komut ekranında çalıştıralım. Aşağıdaki çıktı ile karşılaşacağız.

array(1){
   [0]=>
   string(11) "calistirilan-dosya-adi.php"
}

Görüldüğü üzere; öntanımlı $argv değişkeni, array yani dizi yapısında. $argv öntanımlı değişkeninin 0 numaralı indeksinde de çalıştırdığımız dosyamızın adı yazıyor. Buradan hareketle $argv değişkeninin ilk indeksinde her zaman çalıştırılan dosyanın ismi vardır. Bunun neden böyle olduğunu açıklamak gerekirse;

$ php calistirilan-dosya-adi.php

php komutundan sonra gelen her ifade bir değerdir. Dolayısıyla çalıştırılan dosya adı da bir değerdir.

Şimdi olaya biraz daha renk katalım ve komut ekranından değerler gönderelim. Gönderdiğimiz bu değerleri alalım ve ekrana yazdıralım.

$ php calistirilan-dosya-adi.php Hello World! 42 06 TR

Komut ekranımızdan dosyamızı çalıştırdık ve çeşitli değerler gönderdik. Şimdi bu değerleri ekrana yazdıralım.

array(6){
    [0]=>
    string(11) "calistirilan-dosya-adi.php"
    [1]=>
    string(5) "Hello"
    [2]=>
    string(5) "World"
    [3]=>
    string(2) "42"
    [4]=>
    string(2) "06"
    [5]=>
    string(2) "TR"
}

Yukarıdaki çıktı da görüldüğü üzere; komut ekranından gelen değerler $argv öntanımlı değişkene yerleştirilmiş durumda. Bu değerleri betik içerisinde; kontrol ederek kullanabiliriz. Burada dikkat etmemiz gereken en önemli nokta ise; komut ekranından gelen değerlerin tümü string olarak kabul edilir. Değer olarak; true / false, float veya null de gönderseniz de bütün değerler string olarak kabul edilecektir.

Şayet; komut ekranından gönderilen değerlerin sayısını öğrenmek isterseniz, yine komut ekranı için öntanımlı olan başka bir değişkene ihtiyacınız var demektir. count($argv) -1 yöntemi ile de değer sayısını bulabilirsiniz. Lakin PHP için de $argc olarak tanımlanan öntanımlı değişken ile değerlerin sayını bulmak mümkün.

echo($argc);

Yukarıdaki satırımızın çıktısı da bize; komut ekranından gönderilen değişkenlerin sayısını verecektir. Bu öntanımlı değişken de her zaman integer değer alır, bu da aklımızın bir köşesinde bulunsun.

Sizlere son olarak göstermek istediğim şey; PHP_EOL.

Komu ekranındayken; HTML elementlerini kullanamıyoruz. Aslında kullanabiliriz lakin bunun da başka bir yazı konusunu olduğunu düşünüyorum.  Dolayısıyla o konulara pek girmeyeceğiz. Sadece göstermek istediğim; satır sonu ifadesi.

Klasik olarak web ortamında;

echo('Hello World! <br>')

<br> elementini kullanarak bir alt satıra geçebiliriz. Lakin komut ekranında durum böyle değil. Bir alt satıra geçmek için kullanmamız gereken yerleşik sabit: PHP_EOL. Bu yerleşik sabit ile komut satırı ortamında bir alt satıra geçebilirsiniz. Söylemek istediklerimizi örnek bir kullanım ile taçlandıralım.

echo('PHP' . PHP_EOL . 'PHP' . PHP_EOL . 'PHP');

Ekran çıktımız da aşağıdaki gibi olacaktır.

PHP
PHP
PHP

Görüldüğü üzere; PHP – CLI ortamında geliştirme yapmak biraz zahmetli. Lakin yazımızın başında da belirttiğimiz gibi bu yazıyı ilerleyen yazılarımızda referans olması için yazdım. Geliştirme hayatımda da PHP – CLI kullanıcısıyım. PHP – CLI’nin avantajları ve dezavantajları oldukça fazla. Lakin yerinde kullanılması durumunda oldukça performanslı yaklaşımlar elde etmek mümkün.

Saygı ve muhabbetle!..

Bu içeriği paylaşmak ister misiniz?

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Buradaki içeriklerin tümü kamu malıdır. Kullanılması ve paylaşılması özgürdür.