假设我有这样一行的php文件:
<?php
function abc() { }
$foo = 'bar';
class SomeClass { }
?>
Run Code Online (Sandbox Code Playgroud)
我需要做些什么特别的使用abc()和$foo内部SomeClass?我正在考虑global在函数中使用来访问函数外部定义的变量.
(我是PHP的OOP新手)
Vid*_*nes 28
任何类外的函数都是全局的,可以从任何地方调用.与变量相同..只记得使用全局变量...
例如
<?php
function abc() { }
$foo = 'bar';
class SomeClass {
public function tada(){
global $foo;
abc();
echo 'foo and '.$foo;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
brz*_*hal 12
只需通过构造函数将变量传递给对象实例,或者在需要时将其传递给方法,并记住不要使用全局!任何地方!
为什么global要避免?
反对全局变量的要点是它们非常紧密地耦合代码.您的整个代码库依赖于a)变量名$ config和b)该变量的存在.如果要重命名变量(无论出于何种原因),则必须在整个代码库中的任何位置执行此操作.您也不能再使用依赖于变量的任何代码./sf/answers/871241381/
您可以abc()随处使用,因为PHP函数可以全局访问.
<?php
function abc() { }
$foo = 'bar';
class SomeClass {
private $foo;
public function __construct($foo) {
$this->foo = $foo;
}
public function doSomething() {
abc($this->foo);
}
}
class OtherClass {
public function doSomethingWithFoo($foo) {
abc($foo);
}
}
$obj = new SomeClass($foo); // voillea
// or
$obj2 = new OtherClass();
$obj2->doSomethingWithFoo($foo);
Run Code Online (Sandbox Code Playgroud)
功能是在全局级别定义的;因此,您无需执行任何操作即可从类的方法中使用它们。
有关更多信息,请参阅手册中的功能页面,其中指出(引用):
PHP 中的所有函数和类都具有全局作用域 - 即使它们是在函数内部定义的,也可以在函数外部调用它们,反之亦然。
$foo另一方面,
对于变量,您必须global在要访问它的每个方法/函数中使用关键字。
有关更多信息,请随时阅读有关变量范围的页面,这应该会给您带来有趣的信息;-)
评论后编辑:
每个方法/函数无论是否在类中定义?
如果“函数”在类内部定义,则它不再被称为“函数”,即使它仍然是function使用的:它被称为“方法”
方法可以静态使用:
MyClass::myMethod();
Run Code Online (Sandbox Code Playgroud)
或者动态地:
$obj = new MyClass();
$obj->myMethod();
Run Code Online (Sandbox Code Playgroud)
取决于它们是否被定义为静态。
旁注:如果您是 PHP 中的 OOP 新手,您绝对应该花一些时间阅读手册的类和对象 (PHP 5)部分:它将解释很多内容。
| 归档时间: |
|
| 查看次数: |
48122 次 |
| 最近记录: |