PHP Conference Japan 2024

variant 類別

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

簡介

VARIANT 是 COM 中相當於 PHP zval 的概念;它是一個結構,可以包含具有各種不同可能類型的值。 COM 擴充套件提供的 variant 類別允許您更好地控制 PHP 在與 COM 傳遞值的方式。

類別概要

class variant {
/* 方法 */
公開 __construct(混合 $value = null, 整數 $type = VT_EMPTY, 整數 $codepage = CP_ACP)
}

variant 範例

範例 #1 variant 範例

<?php
$v
= new variant(42);
print
"類型為 " . variant_get_type($v) . "<br/>";
print
"值為 " . $v . "<br/>";
?>

注意事項:

當回傳值或擷取 variant 屬性時,只有在類型之間存在直接映射且不會導致資訊遺失的情況下,variant 才會轉換為 PHP 值。在所有其他情況下,結果會以 variant 類別的實例形式返回。您可以透過明確使用轉型運算子,或透過 `print` 隱式轉型為字串,強制 PHP 將 variant 轉換或評估為 PHP 原生類型。您可以使用各種 variant 函式對 variant 執行算術運算,而無需強制轉換或冒資料遺失的風險。

另請參閱 variant_get_type()

目錄

新增註解

使用者提供的註解 2 個註解

darren at dcook dot org
17 年前
如果您對 `print_r($obj)`(其中 `$obj` 是從 COM 物件上的函式呼叫返回的內容)沒有返回任何有用的資訊感到沮喪,並且 `variant_get_type($obj)` 只返回一個數字,那麼您實際上需要的函式是
com_print_typeinfo($obj);

它會以人類可讀(或者說,程式設計師可讀)的格式列出所有函式、變數及其類型。很棒!
richard dot quadling at carval dot co dot uk
21 年前
感謝 Harald Radi 和 Wez Furlong。

某些 VBA 函式具有選用參數。有時您想要傳遞的參數不是連續的。

例如:

GoTo What:=wdGoToBookmark, Name="BookMarkName"
GoTo(wdGoToBookmark,,,"BookMarkName)

在 PHP 中,空白的參數需要設為空值。

也就是…

<?php
// 有些伺服器可能有自動逾時設定,因此請設定您需要的時間。
set_time_limit(0);

// 在開發過程中顯示所有錯誤、警告和注意事項。
error_reporting(E_ALL);

// 在某些不需要參數的 COM 函式中用作佔位符。
$empty = new VARIANT();

// 載入適當的類型程式庫。
com_load_typelib('Word.Application');

// 建立要使用的物件。
$word = new COM('word.application') or die('無法載入 Word');
print
"已載入 Word,版本 {$word->Version}\n";

// 開啟一個包含 YourName 和 YourAge 書籤的新文件。
$word->Documents->Open('C:/Unfilled.DOC');

// 填入表單中的資訊。
$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourName'); // 注意 wdGoToBookmark 的使用,來自類型程式庫和 $empty 的使用。
$word->Selection->TypeText($_GET['YourName']);

$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourAge');
$word->Selection->TypeText($_GET['YourAge']);

// 儲存檔案、關閉 Word 並結束。
$word->Documents[1]->SaveAs("C:/{$_GET['YourName']}.doc");
$word->Quit();
$word->Release();
$word = null;
print
"Word 已關閉。\n";
?>

範例文件為…

您好 [YourName 的書籤],您今年 [YourAge 的書籤] 歲。

呼叫方式為…

word.php?YourName=Richard%20Quadling&YourAge=35

此致,

Richard.
To Top