Приложение инвентаризации не показывает результаты - PullRequest
0 голосов
/ 20 июня 2019

Я должен сделать php-программу для приложения управления запасами.

У меня есть основная программа, а также тестовая программа, чтобы убедиться, что все работает правильно

У меня есть код, работающий по большей части

inventory.php

class Product
{
// ----------------------------------------- Properties -----------------------------------------
private $product_name = "no name";
private $product_code = 0;
private $product_price = 0;
private $product_quantity = 0;
private $product_needs = "no needs";
private $error_message = "??";

// ---------------------------------- Set Methods ----------------------------------------------
function set_product_name($value)
{
$error_message = TRUE;
(ctype_alpha($value) && strlen($value) <= 20) ? $this->product_name = $value : $this->error_message = FALSE;
return $this->error_message;
}
function set_product_code($value)
{
$error_message = TRUE;
(ctype_digit($value) && ($value > 0 && $value <= 6)) ? $this->product_code = $value : $this->error_message = FALSE;
return $this->error_message;
}
function set_product_price($value)
{
$error_message = TRUE;
(ctype_digit($value) && ($value > 0 && $value <= 6)) ? $this->product_price = $value : $this->error_message = FALSE;
return $this->error_message;
}
function set_product_quantity($value)
{
$error_message = TRUE;
(ctype_digit($value) && ($value > 0 && $value <= 6)) ? $this->product_quantity = $value : $this->error_message = FALSE;
return $this->error_message;
}
function set_product_needs($value)
{
$error_message = TRUE;
(ctype_alpha($value) && strlen($value) <= 40) ? $this->product_needs = $value : $this->error_message = FALSE;
return $this->error_message;
}
// ----------------------------------------- Get Methods ------------------------------------------------------------
function get_product_name()
{
return $this->product_name;
}
function get_product_code()
{
return $this->product_code;
}
function get_product_price()
{
return $this->product_price;
}
function get_product_quantity()
{
return $this->product_quantity;
}
function get_product_needs()
{
return $this->product_needs;
}
function get_properties()
{
return "$this->product_name,$this->product_code,$this->product_price,$this->product_quantity,$this->product_needs.";
}
}
?>

lab.php

<?php
Require_once("inventory.php");
$lab = new Product;
// ------------------------------Set Properties--------------------------
$product_error_message = $lab->set_product_name('Hinge');
print $product_error_message == TRUE ? 'Name update successful<br/>' : 'Name update not successful<br/>';

$product_error_message = $lab->set_product_code('45435');
print $product_error_message == TRUE ? 'Code update successful<br />' : 'Code update not successful<br />';

$product_error_message = $lab->set_product_price('7.50');
print $product_error_message == TRUE ? 'Price update successful<br />' : 'Product update not successful<br />';

$product_error_message = $lab->set_product_quantity('75');
print $product_error_message == TRUE ? 'Quantity update successful<br />' : 'Quantity update not successful<br />';

$product_error_message = $lab->set_product_needs('Wrap in plastic');
print $product_error_message == TRUE ? 'Needs update successful<br/>' : 'Needs update not successful<br/>';
// ------------------------------Get Properties--------------------------
print $lab->get_product_name() . "<br/>";
print $lab->get_product_code() . "<br />";
print $lab->get_product_price() . "<br />";
print $lab->get_product_quantity() . "<br />";
print $lab->get_product_needs() . "<br />";
$product_properties = $lab->get_properties();
list($product_name, $product_code, $product_price, $product_quantity, $product_needs) = explode(',', $product_properties);
print "Name: $product_name. Code: $product_code. Price: $product_price. Quantity: $product_quantity. Needs: $product_needs";
?>

Но единственное, что на самом деле печатает, это имя

Name update successful
Code update not successful
Product update not successful
Quantity update not successful
Needs update not successful
Hinge
0
0
0
no needs
Name: Hinge. Code: 0. Price: 0. Quantity: 0. Needs: no needs.

Какую часть мне нужно изменить, чтобы все печаталось?

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Это должно заставить его работать.Основная проблема заключается в том, как обрабатываются строковые и числовые значения.Много места для других структурных улучшений:).

inventory.php

<?php

class Product
{
// ----------------------------------------- Properties -----------------------------------------
private $product_name = "no name";
private $product_code = 0;
private $product_price = 0;
private $product_quantity = 90;
private $product_needs = "no needs";
private $error_message = "??";

// ---------------------------------- Set Methods ----------------------------------------------
function set_product_name($value)
{
$error_message = TRUE;
(ctype_alpha($value) && strlen($value) <= 20) ? $this->product_name = $value : $this->error_message = FALSE;
return $this->error_message;
}
function set_product_code($value)
{
$error_message = TRUE;
(is_numeric($value) && ($value > 0 && $value <= 999999)) ? $this->product_code = $value : $this->error_message = FALSE;
return $this->error_message;
}
function set_product_price($value)
{
$error_message = TRUE;
(is_numeric($value) && ($value > 0 && $value <= 999999)) ? $this->product_price = $value : $this->error_message = FALSE;
return $this->error_message;
}
function set_product_quantity($value)
{
$error_message = TRUE;
(is_numeric($value) && ($value > 0 && $value <= 999999)) ? $this->product_quantity = $value : $this->error_message = FALSE;
return $this->error_message;
}
function set_product_needs($value)
{
$error_message = TRUE;
(preg_match('/[^a-z_\-0-9]/i', $value) && strlen($value) <= 40) ? $this->product_needs = $value : $this->error_message = FALSE;
return $this->error_message;
}
// ----------------------------------------- Get Methods ------------------------------------------------------------
function get_product_name()
{
return $this->product_name;
}
function get_product_code()
{
return $this->product_code;
}
function get_product_price()
{
return $this->product_price;
}
function get_product_quantity()
{
return $this->product_quantity;
}
function get_product_needs()
{
return $this->product_needs;
}
function get_properties()
{
return "$this->product_name,$this->product_code,$this->product_price,$this->product_quantity,$this->product_needs.";
}
}

lab.php

$lab = new Product;
// ------------------------------Set Properties--------------------------
$product_error_message = $lab->set_product_name('Hinge');
print $product_error_message == TRUE ? 'Name update successful<br/>' : 'Name update not successful<br/>';

$product_error_message = $lab->set_product_code(45435);
print $product_error_message == TRUE ? 'Code update successful<br />' : 'Code update not successful<br />';

$product_error_message = $lab->set_product_price(7.50);
print $product_error_message == TRUE ? 'Price update successful<br />' : 'Product update not successful<br />';

$product_error_message = $lab->set_product_quantity(75);
print $product_error_message == TRUE ? 'Quantity update successful<br />' : 'Quantity update not successful<br />';

$product_error_message = $lab->set_product_needs('Wrap in plastic');
print $product_error_message == TRUE ? 'Needs update successful<br/>' : 'Needs update not successful<br/>';
// ------------------------------Get Properties--------------------------
print $lab->get_product_name() . "<br/>";
print $lab->get_product_code() . "<br />";
print $lab->get_product_price() . "<br />";
print $lab->get_product_quantity() . "<br />";
print $lab->get_product_needs() . "<br />";
$product_properties = $lab->get_properties();
list($product_name, $product_code, $product_price, $product_quantity, $product_needs) = explode(',', $product_properties);
print "Name: $product_name. Code: $product_code. Price: $product_price. Quantity: $product_quantity. Needs: $product_needs";
?>
0 голосов
/ 20 июня 2019

Ваш продукт Класс Продукт должен выглядеть следующим образом

class Product {

    private $product_name = "no name";
    private $product_code = 0;
    private $product_price = 0;
    private $product_quantity = 0;
    private $product_needs = "no needs";


    function get_product_name() {
        return $this->product_name;
    }

    function set_product_name($value) {
        $this->product_name = $value;
    }

    function get_product_code() {
        return $this->product_code;
    }

    function set_product_code($value) {
        $this->product_code = $value;
    }

    function get_product_price() {
        return $this->product_price;
    }

    function set_product_price($value) {
        $this->product_price = $value;
    }

    function get_product_quantity() {
        return $this->product_quantity;
    }

    function set_product_quantity($value) {
        $this->product_quantity = $value;
    }

    function get_product_needs() {
        return $this->product_needs;
    }

    function set_product_needs($value) {
        $this->product_needs = $value;
    }

    function get_properties() {
        return $this->product_name . ' ' . $this->product_code . ' ' . $this->product_price . ' ' . $this->product_quantity . ' ' . $this->product_needs;
    }
}

Таким образом, вы можете создать экземпляр и получить правильные значения

//lab.php

$product = new Product();
$product->set_product_code(1234);

print $product->get_product_code(); // print 1234

Все проверки должны проводиться вне Модели продукта

$product_quantity = '7.5';

if(is_numeric($product_quantity)) { // check if is numeric

    $product->set_product_quantity($product_quantity); // set the product quantity

    print "Quantity update successful<br />"; // show successful messages
} else {
    print "Quantity update is not successful<br />";
}


...