Longhorn PHP 2023 - Call for Papers

Küresel Alan

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Herhangi bir isim alanı tanımı olmaksızın, tüm sınıf ve işlev tanımları PHP'de isim alanlarının desteklenmediği zamanlardaki gibi küresel alana yerleştirilir. Bir ismin önüne doğrudan doğruya \ konulması, bu ismin bir isim alanı bağlamında bile küresel alandan bir isim olarak işlem görmesini sağlar.

Örnek 1 - Küresel alan belirtiminin kullanımı

<?php
namespace A\B\C;

/* A\B\C\fopen işlevidir */
function fopen() {
/* ... */
$f = \fopen(...); // küresel fopen çağrılır
return $f;
}
?>

add a note

User Contributed Notes 5 notes

up
60
routinet
11 years ago
Included files will default to the global namespace.
<?php
//test.php
namespace test {
  include
'test1.inc';
  echo
'-',__NAMESPACE__,'-<br />';
}
?>

<?php
//test1.inc
 
echo '-',__NAMESPACE__,'-<br />';
?>

Results of test.php:

--
-test-
up
16
nobody at example dot com
8 years ago
In namespaced context the Exception class needs to be prefixed with global prefix operator.

<?php

namespace hey\ho\lets\go;

class
MyClass
{
    public function
failToCatch()
    {
        try {
           
$thing = somethingThrowingAnException();
        } catch (
Exception $ex) {
             
// Not catched
       
}
    }

    public function
succeedToCatch()
    {
        try {
           
$thing = somethingThrowingAnException();
        } catch (\
Exception $ex) {
             
// This is now catched
       
}
    }

}
up
0
PhoneixSegovia at gmail dot com
9 months ago
Note that variables aren't part of the namespace so they are always global (or scoped to function, etc.) and can't be accessed the same way as other namespace stuff.

So no:

    namespace Foo;
    $var = "hello";
    echo \Foo\$var;
up
-29
hileon at gmail dot com
7 years ago
This design of access globe name is bad, at least inconvenient.
In case that you have some legacy code, and try to copy and re-use it under some namespace. You have to add prefix "\" on any global function call.
up
-39
xmarcos at gmail dot com
11 years ago
That's the expected behavior, you have to declare the namespace at the top of the file to "extend" it.

If you include a global namespaced file, it will operate on the global namespace.
To Top