找回密码
 新建账号

[PHP] PHP class 类内部调用类外部定义的变量

[复制链接]
php 发表于 2013/1/4 11:21 | 显示全部楼层 |阅读模式
PHP class 类内部调用类外部定义的变量,实现在类中引用外部定义的全局变量。
方法一:通过构造方法传递外部参数到类内部
  1. <?php
  2.         $url = 'http://www.51-n.com/';
  3.         
  4.         class test{
  5.                 public $url;
  6.                 function __construct($url=''){
  7.                         $this->url = $url;
  8.                 }
  9.                 function showUrl(){
  10.                         echo $this->url;
  11.                 }
  12.         }
  13.         
  14.         $test = new test($url);
  15.         $test->showUrl();
  16. ?>
复制代码
方法二:在PHP类方法中使用global关键字直接引用类外部变量
  1. <?php
  2.         $url = 'http://www.51-n.com/';
  3.         
  4.         class test{
  5.                 public $url;
  6.                 function showUrl(){
  7.                         global $url;
  8.                         $this->url = $url;
  9.                         echo $this->url;
  10.                 }
  11.         }
  12.         
  13.         $test = new test($url);
  14.         $test->showUrl();
  15. ?>
复制代码
方法三:在PHP类方法中直接使用$GLOBALS全局数组引用类外部变量
  1. <?php
  2.         $url = 'http://www.51-n.com/';
  3.         
  4.         class test{
  5.                 public $url;
  6.                 function showUrl(){
  7.                         $this->url = isset($GLOBALS['url'])?$GLOBALS['url']:'';
  8.                         echo $this->url;
  9.                 }
  10.         }
  11.         
  12.         $test = new test($url);
  13.         $test->showUrl();
  14. ?>
复制代码
方法四:直接将需要全局使用的变量定义到超全局变量中去,比如$_SERVER.
  1. <?php
  2.         $_SERVER['domain'] = 'wuxiancheng.cn';
  3.         
  4.         class test {
  5.                 public function showDomain(){
  6.                         echo $_SERVER['domain'];
  7.                 }               
  8.         }
  9.         
  10.         $test = new test();
  11.         
  12.         $test->showDomain();
  13. ?>
复制代码
不过,为了安全起见防止变量被意外改变,变量的可用范围应该尽量缩小。

手机版|轻松E站

GMT+8, 2024/12/22 00:53

快速回复 返回顶部 返回列表