ホームページ > バックエンド開発 > PHPチュートリアル > PHPがcomコンポーネントを呼び出すときのパラメータの問題

PHPがcomコンポーネントを呼び出すときのパラメータの問題

WBOY
リリース: 2016-06-23 14:12:49
オリジナル
1302 人が閲覧しました

SMS PHP リファレンス

私は PHP を使用して SMS cat インターフェイスを開発しています。その 1 つは SMS メッセージを読み取るためのものです。
$objSMS = new com("alasun.alasunsms")
$objSMS-> ;CommPort=$port;
$lngRes=$objSMS->OpenComm;
If($objSMS->ReadMsgByIndex($Index, $sNo, $sCon, $MsgCenterNo, array($dSendTime),$lTimeZone) == 0)
{
echo $sNo.$sCon."

}
パラメータの説明:
$index: SMS シリアル番号、唯一の受信パラメータ
$sNo: SMS 番号、出力パラメータ
$ sCon: SMS コンテンツ、出力パラメーター
$MsgCenterNo: SMS センター、出力パラメーター
$dSendTime: SMS 時間、出力パラメーター
$lTimeZone: SMS タイムゾーン、出力パラメーター
////////////// //////// /////////
//入力パラメーターまたは出力パラメーターが同じ方法で渡されるかどうかに関係なく、ASP または他の言語を使用するのは非常に簡単です。実行後は対応する値になりますが、PHP をどのように使用しても機能しません。テストは次のとおりです。
//////最初の呼び出し
If($objSMS->ReadMsgByIndex($) Index, $sNo, $sCon, $MsgCenterNo, $dSendTime,$lTimeZone) == 0)
// この方法で呼び出すと次のエラーが発生します
致命的なエラー: キャッチされない例外 'com_Exception'メッセージ 'パラメータ 4: 型が一致しません。
' in E:AppServwwwsms.php:50
//$dSendTime が時間型であり、com コンポーネントが C++ で記述されているため、50 行目は上記のコード行です。
//////2 番目の呼び出しでは、情報を確認した後、$dSendTime 時刻パラメーターを配列に追加する必要があります。PHP 自体には他の言語のような datetime データ型がありません。
If($objSMS- >ReadMsgByIndex($Index, $ sNo, $sCon, $MsgCenterNo, array($dSendTime),$lTimeZone) == 0)
//このように呼び出すと、参照に問題があるかのように次のエラーが発生します
致命的なエラー: E:AppServwwwcronsmsreceive.php の 50 行目でパラメーター 5 を参照によって渡すことができません

この状況をどう呼べばよいでしょうか?後者の方法によれば、次の 5 つの出力パラメータの前に & を追加することも間違いです。

ディスカッションに返信(解決策)

検索後、SMS Catの関連手順
ショートメッセージを読み取る(ReadMsgByIndex)
機能説明: SIMカード内の指定された場所にあるショートメッセージを読み取ります
パラメータ: iIndexNo Integer SMSシリアル番号
sNo string 受信したテキストメッセージの送信元番号
sCon string 受信したテキストメッセージの内容
sMsgCenterNo string SMSセンター番号
dSendTime date テキストメッセージを送信した時刻
iSendTimeZone Integer テキストメッセージを送信したタイムゾーン
Return: Long 0 読み取り成功、他の読み取りに失敗しました

dSendTime は php の長さ 8 の文字列に対応する倍精度数値です
しかしパラメータ 4: 型が一致しません。この 4 番目のパラメータは彼を参照していますか?
それは sMsgCenterNo であるはずですよね?
この点は、エラー「致命的エラー: array($dSendTime) に変更後、パラメータ 5 を参照によって渡すことはできません」でもサポートされます。

検索後、SMS Cat の関連指示を参照
ショート メッセージの読み取り (ReadMsgByIndex)
関数の説明: SIM カード内の指定された場所にあるショート メッセージを読み取ります
パラメーター: iIndexNo Integer SMS シリアル番号
sNo string 受信したテキスト メッセージの送信元番号
sCon string 受信したテキスト メッセージの内容
sMsgCenterNo string SMS センター番号
dSendTime 日付 テキスト メッセージが送信された時刻
iSendTimeZone 整数 SMS 送信のタイム ゾーン
戻り値: Long 0 読み取り成功、その他の読み取りは失敗

dSendTime は倍精度数値であり、php の長さ 8 の文字列に対応します
ただしパラメータ4: Type がこの 4 番目のパラメータと一致しません 彼のことですか
sMsgCenterNo のはずですよね?
この点は、エラー「致命的エラー: array($dSendTime) に変更した後、参照によってパラメータ 5 を渡すことができません」によっても裏付けられます。
Xiaohe は複数のパラメータを正しく渡すにはどうすればよいですか?

$sMsgCenterNo

これは単なる文字列型のパラメータです。 $dSendTime が配列に追加された後、他のエラーが報告されます。これは、最初はこのパラメータ型であったことを意味しますが、他にも問題があります

$ sno = ""; (intval($Index), $sNo, $, $MsgCenterNo, $dSendTime,$lTimeZone) == 0)
//次のエラーが発生します
b>致命的なエラー: キャッチされない例外 'com_Exception' とメッセージ 'パラメータ 1: タイプが一致しません。

最初のパラメータは SMS のシリアル番号、数値タイプですが、パラメータ 1 のタイプが間違っているというメッセージが表示されるのはなぜですか?


十分な長さの文字列を与えていますか?

十分な長さの文字列を与えていますか?

php 文字列パラメータの長さを定義するのはどうですか?

試してみましたが、やはり問題は時間パラメータです。パラメータはdatetime型ですが、PHPで渡すパラメータの型をどのように定義すればよいかわかりません。

PHP は COM (通常は整数、文字列、または NULL) を呼び出します。他に特別なタイプはありません。



この投稿は xuzuning によって最終編集されました: 2013-06-10 19:26:48
dSendTime スペースは php "x00x00x00x00x00x00x00x00" に対応します
実際には受信ではなく送信しています

dSendTime スペースは php "x00" に対応しますx00x00x00x00x00x00x00"

ではなく、実際に渡しているのです。 はい、これは出力パラメータですが、実行中に常に型エラーが返されます。他の言語は非常に単純ですが、PHP ではそれを処理する方法がわかりません

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート