PHP中--autoload和Smarty衝突的解決方法

文章主要介紹了PHP中__autoload和Smarty衝突的簡單解決方法,通過spl_autoload_register註冊__autoload函數的方法來解決__autoload函數再在Smarty無效的問題,需要的朋友可以參考下。

PHP中--autoload和Smarty衝突的解決方法

  一、問題:

最近,在項目中發現,PHP 的 __autoload 方法失效了。調試了好久,百思不得其解,查了下資料才知道原來是 Smarty 的原因。新版的 Smarty 改變了autoload的方式。

  二、解決方法:

在 Smarty 的`包含類文件後加一段代碼,spl_autoload_register("__autoload");

如下:

?

1

2

3

4

5

<?php

define('ROOT_PATH', dirname(__FILE__));

require_once ROOT_PATH . '/includes/smarty/';

spl_autoload_register("__autoload"); // 添加這段代碼

?>

  【拓展閱讀】

  淺析php數據類型轉換

PHP 在變量定義中不需要(或不支持)明確的類型定義;變量類型是根據使用該變量的上下文所決定的。也就是說,如果把一個字符串值賦給變量 var,var 就成了一個字符串。如果又把一個整型值賦給 var,那它就成了一個整數。

PHP 的自動類型轉換的一個例子是加號“+”。如果任何一個操作數是浮點數,則所有的操作數都被當成浮點數,結果也是浮點數。否則操作數會被解釋爲整數,結果也是整數。注意這並沒有改變這些操作數本身的類型;改變的僅是這些操作數如何被求值以及表達式本身的類型。

  類型強制轉換

允許的強制轉換有:

?(int), (integer) - 轉換爲 整型(integer)

?(bool), (boolean) - 轉換爲 布爾型(boolean)

?(float), (double), (real) - 轉換爲 浮點型(float)

?(string) - 轉換爲 字符串(string)

?(binary) - 轉換爲二進制 字符串(string) (PHP 6)

?(array) - 轉換爲 數組(array)

?(object) - 轉換爲 對象(object)

?(unset) - 轉換爲 NULL (PHP 5)

(binary) 轉換會在結果前面加上前綴'b',PHP 5.2.1 新增。

注意在括號內允許有空格和製表符

將 字符串(string)文字和變量轉換爲二進制 字符串(string):

  複製代碼 代碼如下:

<?php

$binary = (binary)$string;

$binary = b"binary string";

?>

如果要改變一個變量的類型,參見 settype();

settype — 設置變量的類型

bool settype ( mixed $var , string $type )

將變量 var 的類型設置成 type。

type 的可能值爲:

?“boolean” (或爲“bool”,從 PHP 4.2.0 起)

?“integer” (或爲“int”,從 PHP 4.2.0 起)

?“float” (只在 PHP 4.2.0 之後可以使用,對於舊版本中使用的“double”現已停用)

?“string”

?“array”

?“object”

?“null” (從 PHP 4.2.0 起)

成功時返回 TRUE, 或者在失敗時返回 FALSE.

intval() , floatval() , strval() , 這三個函數也可轉換