嘿伙计们我现在正在做三件事,我正在努力照顾,并希望你能提供帮助。我有错误,警告和我的代码中的通知我想补丁,希望你能帮助我,错误如下。
有很多错误
PHP Warning: Invalid argument supplied for foreach() in php/libraries/RotateLatestAssets.class.php on line 35
PHP Notice: Undefined variable: config in php/libraries/RotateLatestAssets.class.php on line 18
PHP Notice: Undefined variable: json in php/libraries/RotateLatestAssets.class.php on line 31
PHP Notice: Undefined variable: json in php/libraries/RotateLatestAssets.class.php on line 32
然后有一个非常奇怪的我在我的代码中发表评论.... 我在想侏儒,但谁知道......
这是班级
<?php
class RotateLatestAssets
{
protected $config;
public function __construct()
{
$this->config = $config;
}
//********************************************************************************
//* Public Methods
//********************************************************************************
public function getAssets()
{
$this->json = self::jsonDecode($this->config, true);
define('latest', __DIR__ . $json['paths']['latest']);
define('dist', __DIR__ . $json['paths']['dist']);
foreach($this->json['files'] as $fileName => $fileVersion)
{
$cacheName = implode("-$fileVersion.", explode('.',$fileName) );
if(!file_exists(dist . $cacheName))
{
try {
copy(latest . $cacheName, dist . $fileName);
} catch(Exception $e) {
echo 'Copy Exception: ', $e->getMessage(), "\n";
}
}
}
}
//********************************************************************************
//* Static Methods
//********************************************************************************
/**
* Returns a json decoded object or array
*
* @param string $json
* @param bool $toAssoc
* @return object|array Depending on the parameter supplied
*/
private static function jsonDecode($json, $toAssoc = true)
{
/**
* Based on known JSON_DECODE() errors
* 0 = JSON_ERROR_NONE
* 1 = JSON_ERROR_DEPTH
* 2 = JSON_ERROR_STATE_MISMATCH
* 3 = JSON_ERROR_CTRL_CHAR
* 4 = JSON_ERROR_SYNTAX
* 5 = JSON_ERROR_UTF8
*/
$result = json_decode($json, $toAssoc);
/* Will produce this sometimes out of the blue after a few refreshes?
PHP Fatal error: Uncaught exception 'Exception' with message
'JSON Error: - Syntax error, malformed JSON' in php/libraries/RotateLatestAssets.class.php:99
Stack trace:
#0 php/libraries/RotateLatestAssets.class.php(28): RotateLatestAssets::jsonDecode(NULL, true)
#1 php/libraries/RotateLatestAssets.class.php(119): RotateLatestAssets->getAssets()
#2 {main}
thrown in php/libraries/RotateLatestAssets.class.php on line 99
*/
switch(json_last_error())
{
case JSON_ERROR_DEPTH:
$error = ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
$error = ' - Invalid or malformed JSON encoding';
break;
case JSON_ERROR_CTRL_CHAR:
$error = ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
$error = ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
$error = ' - Syntax error, malformed UTF-8 characters';
break;
case JSON_ERROR_NONE:
default:
$error = '';
}
if (!empty($error)) throw new Exception('JSON Error: '.$error);
return $result;
}
/**
* Returns bool value for state of array recieved dev:(true) live:(false)
*
* @param array $array
* @return bool
*/
private static function checkMode($array)
{
if(!is_array($array)) throw new Exception("Wrong Type Passed. Expecting (array), received (".gettype($array).")");
return ($array['dev'] == 'true') ? true : false;
}
}
$instance = new RotateLatestAssets($_SERVER['DOCUMENT_ROOT'].'build/config.json');
$instance->getAssets();
?>
答案 0 :(得分:2)
在你的构造函数中,你有:
$this->config = $config;
然而,永远不会创建$config
变量,因此它没有任何价值。
你在getAssets()
做同样的事情。您使用$json
,但它从未被定义过。
无效参数错误是因为你实际上在做foreach(null
这是错误的,你只能迭代一个数组。