ホームページ > バックエンド開発 > PHPチュートリアル > PHP 名前空間の問題について緊急の助けが必要です。まだ食事ができていません。助けてください。 !

PHP 名前空間の問題について緊急の助けが必要です。まだ食事ができていません。助けてください。 !

WBOY
リリース: 2016-06-23 14:19:59
オリジナル
895 人が閲覧しました

皆さん、こんにちは。プログラムで websocket 関数を使用しました。プログラムをローカルでデバッグしたときはエラーが報告されませんでしたが、サービスに転送するとエラーが報告されました。オンラインで検索したところ、PHP バージョンであることがわかりました。 ://s.yanghao.org/program/viewdetail.php?i=140457
私のマシンの PHP バージョンは 5.4 ですが、サーバー上のバージョンは 5.2 です。PHP5.2 に簡単に置き換えることができる名前空間関数はありますか。 php5.3 とてもお急ぎですか?
require("lib/SplClassLoader.php");
$classLoader = new SplClassLoader("WebSocket","/lib");
$server = new WebSocketServer("124.172.243.71) ", 8000, false);//ここでエラーが報告されます
エラーの内容は以下の通りです
入力に予期せぬ文字があります: '' (ASCII=92) state=1 in


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



5.3 の PHP .0 以降のバージョンでは、名前空間のサポートが開始されます。
だから素直にサーバーをアップグレードした方がいいです


SplClassLoader.php のコードは次のとおりです。どう変更すればよいですか?サーバーと Web サイトは稼働しているため、サーバーのアップグレードは非常に面倒ですが、Web サイトが稼働できない場合、問題はさらに大きくなります。
{
private $ _fileExtension = '.php';
private $_includePath;
/**
* 新しい SplClassLoader を作成します。 
* 指定された 名前空間の クラス を読み込みます。
*
* @param string $ns 使用する名前空間。
     */
public function __construct($ns = null , $includePath = null )
$this-> setNamespaceSeparator($sep)
->_namespaceSeparator = $sep; }

/**
* このクラスローダーの名前空間内のクラスによって使用される名前空間区切り文字を設定します。
*
* @param string $sep 使用する区切り文字。
     */
public function getNamespaceSeparator()
{ return $this - > _namespaceseparator;
_fileExtension = $fileExtension
}

/**
     * このクラスローダーの名前空間にあるクラスファイルのファイル拡張子を取得します。
*
* @return string $fileExtension
*/
public function getFileExtension()
{
return $this->_fileExtension;
}

/**
* この クラス ローダー を SPL 自動ロード スタックにインストールします。
     */
public register()
{
spl_autoload_register(array($this, 'loadClass'));
}

/**
* このクラスローダーを SPL オートローダー スタックからアンインストールします。
     */
public unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
}}
/ **&#&*/
パブリック関数loadclass($ classname)
{
if(null === $ this-> _namespace || $ this-> _namespace。 === substr($className, 0, strlen($this->_namespace.$this->_namespaceSeparator))) {
$fileName = '';
$namespace = '';
if (false !== ($lastNsPos = strripos($className, $this->_namespaceSeparator))) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace($this->_namespaceSeparator, DIRECTORY_SEPARATOR, $namespace) 。 DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) 。 $this->_fileExtension;

require ($this->_includePath !== null ? $this->_includePath . DIRECTORY_SEPARATOR : '') 。 $ファイル名;
}
}
}

M、不明命名空间

搞定了、升级了服务器のPHP版本、升级到5.3就没有问题了

你sb吗,前说升级怕网站挂掉,现在又升级了,你好像掴简单问题复杂化了

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