php - PHP自动加载捕获选择的值,而不是找到一个类
问题描述
我一直在关注 Youtube 上的这个自动加载活动,但我似乎再也找不到问题所在了。请帮忙。
一切看起来像这样: daniactivity>(第一个文件夹)classes>calc.class.php(第二个文件夹)includes>calc.inc.php & class-autoload.inc.php(无文件夹)index.php
daniactivity/classes/calc.class.php
class Calc{
public $operator;
public $num1;
public $num2;
public function __construct(string $operator, int $num1 , int $num2){
$this->operator = $operator;
$this->num1 = $num1;
$this->num2 = $num2;
}
public function calculator(){
switch ($this->operator) {
case 'add':
$result = $this->num1 + $this->num2;
$result;
break;
case 'sub':
$result = $this->num1 - $this->num2;
$result;
break;
case 'div':
$result = $this->num1 / $this->num2;
$result;
break;
case 'mul':
$result = $this->num1 * $this->num2;
$result;
break;
default://in case error
echo "Error";
break;
}
}
daniactivity/includes/calc.inc.php
declare(strict_types=1);
include'class-autoload.inc.php';
$oper = new $_GET['oper'];
$num1 = new $_GET['num1'];
$num2 = new $_GET['num2'];
$obj = new Calc($oper,(int)$num1,(int)$num2);
try {
echo $obj->calculator();
} catch (TypeError $e) {
echo "Error!" . $e->getMessage();
}
daniactivity/includes/class.autoload.php
spl_autoload_register('myAutoLoader');
function myAutoLoader($className){
$url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if (strpos($url, 'includes') !==false) {
$path = '../classes/';
}
else {
$path = 'classes/';
}
$extension = '.class.php';
require_once $path.$className.$extension;
daniactivity/index.php
<?php
declare(strict_types = 1);
include 'includes/class-autoload.inc.php';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form action="includes/calc.inc.php" method="get">
<p>My Own calculator</p>
<input type="number" name="num1">
<select name="oper">
<option value="add">Addition</option>
<option value="sub">Subtraction</option>
<option value="div">Div</option>
<option value="mul">Multiplication</option>
</select>
<input type="number" name="num2" placeholder="second number">
<button type="submit" name="submit">Calculate</button>
</form>
</body>
</html>
我得到了什么
我没有计算,而是得到了这个。
警告:require_once(../classes/mul.class.php):无法打开流:第 27 行的 C:\xampp\htdocs\daniactivity\includes\class-autoload.inc.php 中没有这样的文件或目录
致命错误:require_once():在 C:\xampp\htdocs\daniactivity\includes\class- 中打开所需的 '../classes/mul.class.php' (include_path='C:\xampp\php\PEAR') 失败第 27 行的 autoload.inc.php
每次我在选择中选择加法或减法或任何时,它都会获取该值并将其添加到自动加载器的路径中。
我不明白自动加载器如何扫描类,但我认为它与 URL 有关。请帮助:<< 非常感谢您花时间阅读本文。
解决方案
推荐阅读
- android - 当设备从广播接收器锁定时如何显示活动?
- c++ - 通过加法或减法使数组的所有元素相等
- reactjs - Expo 表单数据发送到 POST API
- node.js - 为什么我没有得到 mongodb 集合的响应?
- css - 如何更改 react-bootstrap 中活动单选按钮的背景颜色?
- r - 安装 INLA 包的问题
- php - 无法使用 2 个可能的身份验证器在用户名“***”的 SMTP 服务器上进行身份验证
- java - 分配给实例变量时的 SuppressWarnings 注释
- php - How to loop multiple nested loop in one table in laravel?
- mongodb - Mongoose 使用外键在 3 个集合中查找