__autoload () против включения, будет ли __autoload () что-то выводить?

Я занимаюсь разработкой программы, основанной на сторонних разработках. Я пишу класс и использую __autoload () для его загрузки.
Программа работает следующим образом:
1. Я загружаю свой скрипт на удаленный сервер.
2. сторонний сервер запросит мой скрипт с некоторым параметром get.
3. Мой скрипт возвращает str, и сторонний сервер проверит str. Если str совпадает с параметром get, он действителен, если нет, то недействителен.
Теперь проблема заключается в следующем:
когда я использую __autoload (), это вызовет некоторую ошибку, и когда я заменю __autoload на include / require, он будет работать точно.
код выглядит следующим образом:

wechat.class.php

        public function __construct($options){
$this->_token=isset($options['token'])?$options['token']:'';
}

public function test(){
var_dump($this->_token);
}

private function checkSignature(){
$signature = isset($_GET["signature"])?$_GET["signature"]:'';
$timestamp = isset($_GET["timestamp"])?$_GET["timestamp"]:'';
$nonce = isset($_GET["nonce"])?$_GET["nonce"]:'';

$token = $this->_token;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}

public function valid($return=false){
$echostr=isset($_GET['echostr'])?$_GET['echostr']:'';
if($return){
if($echostr){
if($this->checkSignature()){
return $echostr;
}else{
return false;
}
}else{
return $this->checkSignature();
}
}else{
if($echostr){
if($this->checkSignature()){
die($echostr);
}else{
die('no access');
}
}else{
if($this->checkSignature()){
return true;
}else{
die('no access');
}
}
}
}

}
?>

wechat.php

<?php
function __autoload($classname){
include "./wechat/".$classname.".class.php";
}
$options=array(
'token'=>'tudouya',
);
$wechat=new Wechat($options);
$wechat->valid();
?>

Кроме того, моя версия php 5.4. Я долго тестирую этот скрипт и нахожу, что __autoload () и include будут нормально работать в php 5.2, но не в php 5.4.
Я даже думаю, есть ли ошибки в php, но я не могу решить.
надеюсь, что я опишу свой вопрос ясно и извините за мой плохой английский.

0

Решение

Ответ:

include "./wechat/".strtolower($classname).".class.php";

В противном случае он попытается включить Wechat.class.php (в верхнем регистре w, который не существует в виде файла).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]