"Redeclared fonksiyonunu" önlemek için bir yolu var mı

3 Cevap php

Ben Wordpress sayfamda belli bir eklenti (dtabs) uygulanması oldum ama son sürümüne yükselttikten sonra, ben şimdi bir hatayı ben dtab_list_tabs() denilen ana işlevi çağırmak 2 vaktim bulundu.

Çalışır yolu eklenti size düzen sekmeleri yerleştirmek istiyorum ancak birçok kez include_once'd alır ama ana işlevi denir olduğunu. I dtab_list_tabs() 2 tür aramaları var.

Şimdi, sorun geliştirici doğrudan içinde dtab_list_tabs() denilen current_tab() başka bir işlev eklemeyi karar ne sebeple olursa olsun, olduğunu. Bir işlev içinde bildirilen Çünkü, görünüşe PHP en kısa sürede bana hiç mantıklı değil ana işlevi 2nd time, çağrı olarak redeclare çalışır.

PHP Ölümcül hata: Cannot redeclare current_tab() (daha önce de ... / wp-content/plugins/dtabs/dtabs.php ilan: 1638) in ... / wp-content/plugins/dtabs/dtabs.php üzerinde hat 1638

Bu revizyon kodu http://plugins.svn.wordpress.org/!svn/bc/208481/dtabs/trunk/dtabs.php yer almaktadır

What I'm trying to figure out is whether there is a way to tell PHP that yeah... it has an internal function, which is a perfectly valid PHP paradigm as far as I know, so don't redeclare it and fail.

Eldeki duruma gelince, ben kaldırdık current_tab() kullanılacağı görünmüyor gibi.

3 Cevap

O isimde bir fonksiyon zaten tanımlı olup olmadığını function_exists() sınamak için kullanabilirsiniz. Eğer tanım koşullu yaparsanız (eğer (bir şey) {function foo () {...}}) php "değerlendirmek" olacak koşul yerine yalnızca tanım.

function foo() {
  if ( !function_exists('bar') ) {
    function bar() {
      echo 'bar ';
    }
  }

  bar();
}

foo();
foo();

ayrıca bkz: http://docs.php.net/functions.user-defined

(Ama hep birlikte bu tür şeyleri önlemek için denemek istiyorum)

Bu deneyebilirsiniz:

if (!function_exists('my_function')) {
  function my_function() {

  }
}

function_exists() - işlev tanımlanmış ise TRUE döndürür