Neden bu PHP program işe yaramazsa?

4 Cevap php

I PHP için yeni ve w3schools gelen PHP işlevleri hakkında öğrenme. Bu "PHP işlev adı bir değişken olduğunda bir işlev çağrısı yapılmasını sağlar" dedi

Bu program çalıştı

<?php
$v = "var_dump";
$v('foo');
?>

Ama bu program işe yaramadı:

<?php
$v = "echo";
$v('foo');
?>

Ama ben yaparsam echo('foo'); çalışır.

Ben yanlış ne yapıyorum?

4 Cevap

PHP adlandırılan bu özelliği, Variable functions .

Burada sorun, echo ki not gerçekten bir işlev değil bir dil oluşumudur ve değişken fonksiyonlar only fonksiyonları ile kullanılabilir olması ile. İlk örnekte var_dump bir fonksiyon olduğunu ve iyi çalıştı.

PHP doc için Variable functions:

Değişkenli fonksiyonlar won't language constructs echo (), print () gibi, unset (), isset (), empty () ile çalışacak, (), (gerektiren) ve benzeri dahil . Değişken işlevleri gibi bu yapıları herhangi faydalanmak için sarıcı işlevleri kullanmak.

: Sen printf function in place of echo olarak yararlanabilir

$e = "printf"; // printf is a function not a language construct.
$e('foo');

: ya echo gibi bir wrapper function yazabilirsiniz

$e = "echo_wrapper";
$e('foo');

function echo_wrapper($input) { // wrapper function that uses echo.
        echo $input;
}

echo bir fonksiyon değil! Sen bir fonksiyonudur ve bir şey yazdırmak için kullanılabilir printf hangi kullanabilirsiniz.

Orada iki olası sorunları vardır, ve her ikisini de ele almalıdır:

  1. Bu özellik sadece hatırladığım kadarıyla, PHP 5.3 çalışır. İşte yeni ana sürüm, bu yüzden bunu kullandığınızdan emin olmalıdır. Bu sen değilsin çok olasıdır.
  2. echo bir işlev değil, daha ziyade bir PHP dil oluşumudur. Sen echoes ona ne geçildi sarıcı fonksiyon yazmak gerekir.

Bu çalışır:

$v = "printf";
$v('foo');