php函數-系統函數 遞迴函式 重用函數 建構函式使用

來源:互聯網
上載者:User

php教程函數-系統函數 遞迴函式 重用函數 建構函式使用

<?php
/*
 *  1.內建函式:PHP可以在函數內部再聲明函數
 *    目的就是在函數內部調用
 *    用來協助外部函數完成一些子功能
 *
 *  2.遞迴函式:在自己內部調用自己的函數名
 *
 *  3.重用函數
 *
 *   require:用於靜態包含
 *   include:用於動態包含
 *   require_once:用於靜態包含,只包含一次
 *   include_once:用於動態包含,只包含一次
 *
 *  4.一些系統函數的使用
 * 資源=opendir("目錄名")
 * readdir(資源)
 *
 *
 */
 //內建函式
 function score($php,$java,$dotnet)
 {
  function php($php)
  {
   if($php>60)
    return "及格";
   else
    return "不及格";
  }
  function java($java)
  {
   if($java>60)
    return "及格";
   else
    return "不及格";
  }
  function dotnet($dotnet)
  {
   if($dotnet>60)
    return "及格";
   else
    return "不及格";
  }
  
  $total=$php+$java+$dotnet;
  $agv=$total/3;
  echo "你的php成績是{$php}分,".php($php)."<br>";
  echo "你的java成績是{$java}分,".java($java)."<br>";
  echo "你的dotnet成績是{$dotnet}分,".dotnet($dotnet)."<br>";
  echo "你的總分是:{$total}<br>";
  echo "你的平均分是:{$agv}<br>";
 }
  score(50,90,70);
 
 //遞迴函式
 function demo($num)
 {
  echo $num."<br>";
  if($num>0)
   demo($num-1);
  else
   echo "--------------------------------<br>";
  echo $num."<br>";
 }
 demo(10);
 
 function total($dirname,&$dirnum,&$filename)
 {
  $dir=opendir($dirname);
  readdir($dir)."<br>";
  readdir($dir)."<br>";
  while($filename=readdir($dir))
  {
   $newfile=$dirname."/".$filename;
   echo $filename."<br>";
   if(is_dir($filename
  }

 }
 $dirnum=0;
 $filenum=0;
 total("c:/windows",$dirnum,$filenum);
 echo "目錄總數:".$dirnum."<br>";
 echo "檔案總數:".$filenum."<br>";
?>

建構函式和解構函式
建構函式
void __construct ([ mixed $args [, $... ]] )
PHP 5 允行開發人員在一個類中定義一個方法作為建構函式。具有建構函式的類會在每次建立對象時先調用此方法,所以非常適合在使用對象之前做一些初始化工作。

Note: 如果子類中定義了建構函式則不會暗中調用其父類的建構函式。要執行父類的建構函式,需要在子類的建構函式中調用 parent::__construct()。

Example #1 使用新標準的建構函式

<?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructorn";
   }
}

class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructorn";
   }
}

$obj = new BaseClass();
$obj = new SubClass();
?>


為了實現向後相容性,如果 PHP 5 在類中找不到 __construct() 函數,它就會嘗試尋找舊式的建構函式,也就是和類同名的函數。因此唯一會產生相容性問題的情況是:類中已有一個名為 __construct() 的方法,但它卻又不是建構函式。

解構函式
void __destruct ( void )
PHP 5 引入了解構函式的概念,這類似於其它物件導向的語言,如 C++。解構函式會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行。

Example #2 解構函式樣本

<?php
class MyDestructableClass {
   function __construct() {
       print "In constructorn";
       $this->name = "MyDestructableClass";
   }

   function __destruct() {
       print "Destroying " . $this->name . "n";
   }
}

$obj = new MyDestructableClass();
?>


和建構函式一樣,父類的解構函式不會被引擎暗中調用。要執行父類的解構函式,必須在子類的解構函式體中顯式調用 parent::__destruct()。

Note:

解構函式在指令碼關閉時調用,此時所有的頭資訊已經發出。


Note:

試圖在解構函式中拋出一個異常會導致致命錯誤。

<?php
class Foobar {
    public $baz;
    function __destruct() {
        # Don't do either of these, if $baz also has a __destruct()!
        $this->baz = null;
        unset($this->baz);
       
        # Instead, don't clear it at all, or do this:
        $this->baz->__destruct();
    }
}
?>

If you made this mistake, this might happen in php<5.3.6:
<?php
# Some function that throws an exception
function fail($foobar) {
    throw new Exception("Exception A!");
}

$foobar = new Foobar();
$foobar->baz = new Foobar();

try {
    fail($foobar); // Send foobar to func that throws an Exception
} catch( Exception $e ) {
    print $e->getMessage(); // Exception A will be caught and printed, as expected.
}

$foobar = null; // clearing foobar, and its property $baz

try {
    print 'Exception B:';// this will be printed
    // output stops教程 here.
    throw new Exception("Exception B!");
} catch( Exception $e ) {
    print $e->getMessage(); // doesn't happen
}
print 'End'; // this won't be printed
?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.