Soru PHP'deki işlevler içinde sabitleri kullanabilir miyim?


PHP işlevi içinde PHP sabiti kullanmak mümkün mü?

// in a different file
DEFINE ('HOST', 'hostname');
DEFINE ('USER', 'username');
DEFINE ('PASSWORD', 'password');
DEFINE ('NAME', 'dbname');

// connecting to database
function database()
{
    // using 'global' to define what variables to allow
    global $connection, HOST, USER, PASSWORD, NAME;
    $connection = new mysqli(HOST, USER, PASSWORD, NAME)
        or die ('Sorry, Cannot Connect');
    return $connection;
}

18
2017-11-09 06:18


Menşei


Yeni bir kullanıcı neden reddediyor? - Herr
Konuşma becerilerini geliştirmek bir şeydir ve cesaret kırıcılık tamamen farklı bir şeydir. trol olmayın - Herr
@HerrK ile katılıyorum, downvotes zaman zaman oldukça cesaret kırıcı ve gereksizdir. Bunun yanı sıra, YourCommonSense, sizlerin kelime öbekleme becerilerini düşürdüğünü dile getiren sizler, "becerilerini geliştirmesi gerekiyor" ifadesinde sizin deyim yeteneğiniz için sizi nasıl reddedelim? - Jeremy


Cevaplar:


Onları beyan etmene gerek yok global Fonksiyonda, PHP onları globals olarak tanır.

function database()
{
  // using 'global' to define what variables to allow
  global $dbc;
  $connection = new mysqli(HOST, USER, PASSWORD, NAME)
      or die ('Sorry, Cannot Connect');
  return $connection;
}

Php.net'ten:

Süper küreseller gibi, bir sabitin kapsamı da küreseldir. Komut dosyanızın herhangi bir yerinde, kapsamı dikkate almadan sabitlere erişebilirsiniz. Kapsam hakkında daha fazla bilgi için, el ile bölüm bölümünü okuyun. değişken kapsam.


19
2017-11-09 06:21



Sadece cevabınızı kestin ama şunu belirtmek isterim php onları süper küresel olarak tanır. olmalı php onları globals olarak tanır. - Mr. Alien
10x tamir edeceğim - Haim Evgi


En azından denedin mi? :)

İtibaren Manuel:

Süper küreseller gibi,   sabit küreseldir. Bağlanabilirsin   senaryonun herhangi bir yerinde sabitler   kapsamı olmadan.


3
2017-11-09 06:23





define() küresel sabitler üretir.

Yapılandırma öğelerini depolamak için daha iyi yollar vardır.


2
2017-11-09 06:25



Bunların daha iyi olduğu konusunda net bir sonuç yok gibi gözüküyor. - Nicole


Evet, ama onları "küresel" olarak adlandırmanıza gerek yok. Sabitler küreseldir. Eğer alırsanız unexpected T_STRING, expecting T_VARIABLE bir hata olarak, "global" bir ifadeden sonra sabit referansları görmeyi beklemediği için.


1
2017-11-09 06:24