Anonim bir fonksiyonu ile sınıf özelliği başlatılamıyor

2 Cevap

Neden php mal beyanında zaman bir fonksiyona bir özellik başlatmak mümkün değildir? A Parse error: syntax error, unexpected T_FUNCTION in aşağıdaki sonuçlar snippit

<?php
  class AssignAnonFunction {
    private $someFunc = function() {
      echo "Will Not work";
    };
  }
?>

Yine bir dize, sayı veya diğer veri türleri için bir özellik başlatılamıyor?

Edit:

Ama __ yapı () yöntemi bir özellik için bir işlev atayabilirsiniz. Aşağıdaki çalışır:

<?php
  class AssignAnonFunctionInConstructor {
    private $someFunc;

    public function __construct() {
      $this->someFunc = function() {
        echo "Does Work";
      };
    }
  }
?>

2 Cevap

PHP uygulanan değil çünkü.

http://www.php.net/manual/en/language.oop5.properties.php. Alıntı:

They (properties) are defined by using one of the keywords public, protected, or private, followed by a normal variable declaration. This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

Böyle özelliklerini başlatmak değil, fonksiyonlar sabit değerleri değildir. Dolayısıyla benim orijinal cevap "o hayata değil".

Neden uygulanmadı? Ben sadece tahmin edebilirsiniz - bu muhtemelen oldukça karmaşık bir iştir ve kimse bunu uygulamak hızlandırdı. Ve / veya böyle bir özellik için yeterli talep olmayabilir.

Kilitler PHP 5.3 (son sürüm) kadar PHP yoktur. Bunu yapmak istiyorsanız PHP 5.3 olduğundan emin olun.

Önceki sürümlerde, sıralamak biraz böyle, create_function () fonksiyonu ile bu işlevselliği çoğaltabilirsiniz:

$someFunc = create_function($args,$code);
$someFunc();

$ Args "$ x, $ y, $ z" ve $ kodu gibi biçimlendirilmiş bir dize nerede PHP kodu bir dizedir.