2016-02-17 2 views
1

объекты/myClass.phpPHP OOP доступа к переменной в условном операторе

class myClass 
{ 
    public $curID; 

    function get_next_id($type) 
    { 
     if($type == '1') 
     { 
      $this->enquiryID = "CAT" . $row['nextEnquiryID']; 
      $this->curID = $this->enquiryID; 
     } 
     elseif($type == '2') 
     { 
      $this->enquiryID = "GE" . $row['nextEnquiryID']; 
      $this->curID = $this->enquiryID; 
     } 
     elseif($type == '3') 
     { 
      $this->enquiryID = $row['nextEnquiryID']; 
      $this->curID = $this->enquiryID; 
     } 
    } 
} 

Я пытаюсь получить доступ к новому значению curID при его изменении в другом файле.

index.php

Так что я пытаюсь сделать это:

<?php 
    include_once("objects/myClass.php"); 
    echo ($myClass->curID); 
?> 

Однако я не вижу никакого вывода вообще. Условный оператор собирается дать другой тип на основе:

<select class="form-control" name="enquiryType" id="enquiryType"> 
       <option value="1">Enquiry 1</option> 
       <option value="2">Enquiry 2</option> 
       <option value="3">Enquiry 3</option> 
      </select> 

так каждый раз, когда условные изменения мне нужно обновить curID с помощью оператора, а затем отправить его через раз повторить это сейчас, так что я могу затем выполните некоторую другую обработку на index.php

Как я могу это достичь?

EDIT

Больная попытка объяснить немного более тщательно. У меня есть опция «Выбрать с параметрами» (на index.php), которые затем передаются в мой класс и в зависимости от того, что выбрано. Затем я проверяю enquiryType 1 2 или 3 и отправляюсь в базу данных, чтобы получить последний идентификатор запроса для этого типа и добавить либо «GE» «CAT», либо ничего для этого. Затем я устанавливаю curID на любой новый идентификатор. Так что, если последним id был GE1, он узнает, что такое enquiryType, например, сказать «GE» и добавить 1 к нему, так что его «GE2», а затем установить curID в GE2, а затем я хочу, чтобы иметь возможность вернуть это значение index.php и просто откликнуться на данный момент. Надеюсь, это немного поправит извинения, если исходный вопрос не был ясен.

+0

Так что значение ' $ var'? И каков контекст '$ this' в файле' objects/myClass.php'? Потому что он не является частью какого-либо класса. –

+1

Это должно вызывать всевозможные ошибки. – PeeHaa

+0

Хорошо, здесь есть немало вещей. Прежде всего; весь ваш код класса должен быть _inside_ класса при обращении к '$ this'. Во-вторых, вы никогда не создавали '$ myClass'. Все, что вы сделали, это создать класс с именем 'myClass', но вам все равно нужно создать его, используя' $ myClass = new myClass(); '. В-третьих: вы ничего не видите, потому что ваш код полон ошибок - включите 'error_reporting'. – h2ooooooo

ответ

0

внимательно посмотреть объекты/myClass.php есть дополнительный} нашел

0

У вас есть неправильный синтаксис в классе, когда вы закрываете свой класс после публичного $ curID, поместите этот кронштейн в конце. Класс - это шаблон (фабрика для объектов), вам нужно определить экземпляр этого класса, прежде чем вы сможете получить его свойство, например $ object = new myClass(); $ property = $ object-> curID; вы можете изменить это свойство, сделав метод в классе, что примет аргумент и присвоит его свойству curID. Если у вас есть какие-либо вопросы просто спросить. Надеюсь, я правильно понял вопрос, извините, если нет.

+0

Yeh Я заметил, что я положил кронштейн В неправильном месте, поспешность моей части извинилась. надеюсь, мое редактирование исправило это. –

+0

Я не думаю, что можно повторить снова, не обновляя страницу. Как при обновлении ваш объект будет потерян. Посмотрите, как передавать объекты на другую страницу, например, с помощью json. Или работайте только с переменными и ajax. – arnuga3

1

Здесь:

<?php 
    include_once("objects/myClass.php"); 
    echo ($myClass->curID); 
?> 

Должно быть:

<?php 
    include_once("objects/myClass.php"); 
    $myClass = new myClass(); 
    echo ($myClass->curID); 
?> 

Edit: Основываясь на ваш комментарий, кажется, что ваш класс ожидает, по меньшей мере, один параметр, который будет принят в конструкции:

<?php 
    include_once("objects/myClass.php"); 
    $someParameter = 'some data'; 

    $myClass = new myClass($someParameter); 
    echo ($myClass->curID); 
?> 

Не видя полного класса, трудно определить, что __ Функция construct() ожидает.

EDIT:

Я решил заполнить некоторые недостающие данные, вот простой пример:

<?php 
// objects/myClass.php 
class myClass 
{ 

    // $enquiryID was missing in your class 
    public $enquiryID; 
    public $curID; 

    function get_next_id($type) 
    { 
     // This array was missing as well, so here it's been faked 
     $row = array('nextEnquiryID'=>1); 


     if ($type=='1') 
     { 
      $this->enquiryID = "CAT".$row['nextEnquiryID']; 
      $this->curID = $this->enquiryID; 

     } 
     else if ($type=='2') 
     { 
      $this->enquiryID = "GE".$row['nextEnquiryID']; 
      $this->curID = $this->enquiryID; 
     } 
     else if ($type=='3') 
     { 
      $this->enquiryID = $row['nextEnquiryID']; 
      $this->curID = $this->enquiryID; 

     } 

    } 

А другой файл:

<?php 
include_once("object/myClass.php"); 
$someParameter = 'some data'; 

$myClass = new myClass($someParameter); 

// Call get_next_id(), passing in the $type 
$myClass->get_next_id(1); 

// Now that get_next_id() has been called, we can load the value of $myClass->curID 
echo $myClass->curID; 
+0

После добавления, что в моем эхо выдает Предупреждение: Отсутствует аргумент 1 для myClass :: __ construct() Я знаю, что это немного двусмысленно, не видя моего кода (к сожалению, не удалось показать полную брань), но есть что-нибудь вы можете сказать мне об этом? –

+1

Такая ошибка означает, что в функции конструктора отсутствует параметр, я буду обновлять свой ответ, чтобы отразить то, что я имею в виду –

+0

Хотя передача этого в результате этой ошибки очистила, я до сих пор не вижу значения curID echo'd out , Просто пустая пустота! Я думаю, что моя конструкция ожидала подключения к базе данных, которая прошла. Итак, теперь ив теперь: ' include_once 'config/database.php'; include_once 'objects/myClass.php'; $ database = new Database(); $ db = $ database-> getConnection(); echo ($ myClass-> curID); ' –

Смежные вопросы