Neden hiç parametreleri ile bir PHP işlevi parantez gerektiriyor?

5 Cevap php

Ben sadece bir oturumu başlatmak olamazdı merak 3 saat geçirdim, o zaman ben kullanılmış fark:

session_start;

ben kullandım ne zaman:

session_start();

Ben hiç hata iletileri aldı!

Belki o zaman, ben değişkenleri fonksiyonlarını ayırt etmek tembel bir yol düşündüm - ama sonra değişkenler $ gerektirir gibi olamayacağını hatırladı

Kimse onlar kullanılmadığı zaman hiçbir hata verilir neden neden parantez de o zaman gerekli olan ve bana söyleyebilir?

5 Cevap

Ben haber almak (için error_reporting belirledikten sonra E_ALL):

Uyarı: tanımsız sabit session_start Kullanımı - hattında 5 üzerinde / t.php 'session_start' üstlendi

Bir fonksiyon her zaman bir fonksiyon ve bir sabiti arasındaki farkı söyleyemem (Gördüğünüz gibi) başka şekilde parantez gerekiyor. Kod öylesine yazılmış olmalıdır gibi bir sabit veya işlev çağrısı okumak ve hata ayıklama zor bit yapar ise okuyucu görmek için izin değil, insan okumasına bu anlaşılabilir.

Ben bir haber nedeniyle yerine bazı eski kod bu isimde bir sürekli orada değilse PHP tırnaklı dizge olarak görür tırnaksız dizelerini kullanarak diziler erişmek eğilimi geriye uyumluluk için bir hata hata olduğunu varsayalım.

$myArray[myString] = 25;

PHP'nin dil özellikleri (bulunacak dilin hiçbir açık resmi belirtim orada görünüyor olsa bile) öyle diyor çünkü ayraçlar gereklidir.

Çıkışı bilinmeyen bir tanımlayıcı kullanılmış olduğunu bildirmek için bir E_NOTICE hata nedir PHP bilinmeyen bir tanımlayıcı karşılaştığında does, and then assumes that you meant to use that identifier as a string.

<?php
$foo = unknown_identifier;
echo 'Now printing: ' . $foo; // prints 'Now printing: unknown_identifier' (PHP 5.2.6)
?>

E_NOTICE hataları hata raporlama eşiğinin altında çünkü herhangi bir hata görmüyoruz sebebi muhtemeldir. Sen error_reporting yönergesi kullanılarak bu eşiği değiştirebilirsiniz:

<?php
error_reporting(E_ALL);

$foo = unknown_identifier;
echo 'Now printing: ' . $foo;
?>

Bu irade çıktı Yacoby yukarıda ilan edilen "Bildirim" hata iletisi.

Unutmayın, yanıltıcı, the E_ALL error reporting directive does not in fact include all reporting levels in PHP 5.x. PHP 5, tüm hata iletileri etkinleştirmek için E_ALL | E_STRICT kullanmanız gerekir.

- Edit: birçok kişi tarafından yumruk dayak.

Fonksiyonu parantez yoksa Sen fonksiyon ve sabit arasında bir fark yapamazsınız ... Ama bu hataları atmak değil o garip ... php.ini dosyasındaki hataları kapatmış?

All the languages I know or have ever used use brackets to describe functions whether they take no parameters (void) or have a parameter list (optional or not). You get used to it. Maybe it's a hangover from C with all it's function prototypes and all.

Rakam gidin - oldukça bir işlev değil gibi PHP yankı functon bir garip biri ama bir açıklamada bulunuyor, o söyledikten sonra.

http://en.wikipedia.org/wiki/Function(computer_science) bakabilirsiniz

() Işlevi çağrılmalıdır olduğunu gösterir. Onsuz, etrafında referans geçmek mümkün. Örneğin (PHP 5.3):

$callable = session_start;
$callable();