Фатальная ошибка: 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>';
}

остальные функции, полученные из какого-либо другого вызова из контроллера, не дают мне ошибки. Надеюсь, я был достаточно ясен и не написал слишком много.

Author: Diego Grande, 2020-03-20

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);
}

Для получения более подробной информации см.:

  1. классы и объекты в руководстве PHP
  2. свойства в руководстве PHP
  3. ¿для чего нужны Self и This в PHP?
  4. вопрос по self и $this в Stackoverflow на английском языке
 0
Author: A. Cedano, 2020-03-28 18:56:48