zoukankan      html  css  js  c++  java
  • php 学习之对象

    php中怎么实现创建一个对象然后全局都能调用?

    在PHP中相当常见的一种情形时,我们只需要创建一个对象一次,然后在我们的整个程序中使用它。一个很好的例子就是smarty变量,一旦被初始化后就可以在任何地方使用。这种情形的一个很好实现方案就是单例模式。示例代码如下:
    function smartyObject()  
      {  
        if ($GLOBALS['config']['SmartyObj'] == 0)  
        {  
          $smarty = new SmartyGame();  
          $GLOBALS['config']['SmartyObj'] = $smarty;  
        }  
        else 
          $smarty = $GLOBALS['config']['SmartyObj'];  
        return $smarty;  
      }

    注意,我们拥有一个全局smarty变量(该示例中它在config.php中被初始化),如果它的值为0,我们将创建一个新smarty对象。否则,它意味着该对象已经被创建,我们只需要返回它。

    
    

    php中连续调用两个方法

    get_core()和get_id()方法应该都会返回当前对象,即 $this。所以才可以使用这样子的连续调用。至于结果是什么还要看实际的代码,但有一点可以肯定的是它会设置或修改对象的某个状态(属性)。这样子下面举一个例子:

    class A {
    public function get_core()
    {
    // 其他代码
    return $this;
    }
    public function get_id()
    {
    // 其他代码
    return $this;
    }
    public function exec()
    {
    // 这里就可以这样子连续调用了
    $this->get_core()->get_id();
    }
    }
    $obj1=new A();
    $obj1->get_core()->get_id();
    return 返回值并且后面的代码将停止执行
    例子1:
    b.php文件代码
      echo'b';
    a.php文件代码
      include('b.php');
      echo'a';
    输出:ba

    例子2:
    b.php文件代码
      echo'b';
      return;
      echo'bb';
    a.php文件代码
      include('b.php');
      echo'a';
    输出:ba
    如果例子2去掉return就会返回bbba
    例子3:
    b.php文件代码
      echo'b';
      exit;
      echo'bb';
    a.php文件代码
      include('b.php');
      echo'a';
    输出:b
    exit与return还是有区别的exit会终止整个程序
    例子4:

    function test(){
      $a=array(1,2);

      //$c=123;
      return $a;

      //return $c;//这个将不会执行因为上面有一个return;

      //return $a.$c;这个写法也不对
    }
    $b=test();
    print_r($b);

    输出:Array ( [0] => 1 [1] => 2 )

    如果去掉return $a;的话就打印不出来因为没有return只是打印了函数的过程而并没有打印出结果(值)当然我们也可以在函数内部打印然后在调用如:

    function test(){
      $a=array(1,2);
      print_r($a);
    }
    $b=test();但很多时候,我们都会在函数外面调用操作,所以要用return返回一个值给外面

     
  • 相关阅读:
    二、java 与 scala相互调用
    Gradle Tips#1-tasks
    Guice 学习(六)使用Provider注入服务( Provider Inject Service)
    C++第15周(春)项目3
    cocos2d-x3.2中怎样优化Cocos2d-X游戏的内存
    jqGrid源代码分析(一)
    OCP-1Z0-051-题目解析-第6题
    PHP连接sql server 2005环境配置
    【剑指offer】替换字符串中的空格
    android 推断Apk是否签名和 签名是否一致
  • 原文地址:https://www.cnblogs.com/lichihua/p/5654091.html
Copyright © 2011-2022 走看看