Фатальная ошибка: Uncaught ошибка: Call to undefined function sethorrounity ()
привет, очень хорошие! Я пытаюсь создатьпрограммированная объектно-ориентированная страница в PHP, и в одном из классов он говорит мне, что эта функция не определена. Полное сообщение:
фатальная ошибка: Uncaught ошибка: Call to undefined function sethorrounity () in C:\xampp\htdocs\alg\Modelo\Objeto_producto.php:308 трассировка стека: #0 C:\xampp\htdocs\alg\Controlador\Insertar_Controlador.php (249): Объект_продукт->set ценностьвнутренний (40) #1 {main} thrown in C:\xampp\htdocs\alg\Modelo\Objeto_producto.php on-line 308
- единственная функция, которая дает мне ошибку. Я оставляю вам определение референтных методов свойства $Save:
//--------PROPIEDAD $AhorroUnidad DEL PRODUCTO ---------
// Obtener el AHORRO EN % POR UNIDAD si había un precio anterior
public function getAhorroUnidad() {
return $this->AhorroUnidad;
}
// Calcular automáticamente el AHORRO POR UNIDAD si había un precio anterior.
public function setAhorroUnidad($precio,$precioanterior) {
$ahorro = $this->calcularAhorro($precio,$precioanterior);
$this->AhorroUnidad = $ahorro;
}
я заметил, что это происходит со мной с 2 функциями, которые вызывает функция setPrecioAnterior (). Я разделяю его:
//--------PROPIEDAD $PrecioAnterior DEL PRODUCTO ---------
// Obtener el PRECIO ANTERIOR del producto
public function getPrecioAnterior() {
return $this->PrecioAnterior;
}
// Darle un PRECIO ANTERIOR al producto
public function setPrecioAnterior($precioanterior) {
$this->PrecioAnterior = $precioanterior;
// Establece el ahorro por unidad en porcentaje, en relación del precio anterior al acutal.
setAhorroUnidad($this->getPrecio,$this->PrecioAnterior);
// Establece el ahorro por unidad en €uros, en relación del precio anterior al acutal.
setAhorroEurosUnidad($this->Precio,$this->PrecioAnterior);
}
хорошо написаны вызовы из контроллера. Я знаю это, потому что текстовый редактор, который я использую, сообщает мне, на какой странице или страницах вызывается эта функция и в какой именно строке и в каком файле и точной строке определена.
, Наконец, я оставляю if из контроллера, который вызывает функцию setPrecioAnterior ()
if((floatval($_POST["PrecioAnterior"]) > 0) && (floatval($_POST["Precio"]) < floatval($_POST["PrecioAnterior"]))) {
$producto->setPrecioAnterior(floatval($_POST["PrecioAnterior"]));
echo "<br>El Precio anterior es: " . $producto->getPrecio5U() . "<br>";
} elseif((floatval($_POST["PrecioAnterior"]) > 0) && (floatval($_POST["Precio"]) >= (floatval($_POST["PrecioAnterior"])))) {
echo '<script type="text/javascript">
alert("No PUEDES poner un PRECIO ANTERIOR más bajo que el PRECIO de venta.");
window.location="../Vista/prueba_editor.html";
</script>';
} elseif((floatval($_POST["PrecioAnterior"]) > 0) && (floatval($_POST["Precio"]) == 0)) {
echo '<script type="text/javascript">
alert("No PUEDES poner un PRECIO ANTERIOR sin haber rellenado el PRECIO.");
window.location="../Vista/prueba_editor.html";
</script>';
}
остальные функции, полученные из какого-либо другого вызова из контроллера, не дают мне ошибки. Надеюсь, я был достаточно ясен и не написал слишком много.
1 answers
Когда вы находитесь в области видимости объекта, вы должны использовать $this
для вызова методов и свойств этого объекта , которые не являются статическими, и self
для вызова методов или свойств этого объекта, которые являются статическими.
Фактически, уже в свойствах вы видите, что используете $this
, но вам не хватает использовать его также для вызова методов setAhorroUnidad()
и setAhorroEurosUnidad()
public function setPrecioAnterior($precioanterior) {
$this->PrecioAnterior = $precioanterior;
// Establece el ahorro por unidad en porcentaje, en relación del precio anterior al acutal.
$this->setAhorroUnidad($this->getPrecio,$this->PrecioAnterior);
// Establece el ahorro por unidad en €uros, en relación del precio anterior al acutal.
$this->setAhorroEurosUnidad($this->Precio,$this->PrecioAnterior);
}
Для получения более подробной информации см.: