Pregunta

I'm doing a project for school and i am using laravel framework for the first time . I'm having a small issue and i've been stuck for several days and tried lots of different ways - nothing worked.

I have built a time function that will take several arguments then check the db through while loops then add all the results inside a 'global' array , then another function will test that global array and check for the values inside.

The problem i'm having is that i can't get the functions to access the global array properly :

I tried a lot of different ideas online but can;t get the inner functions of the class to access the global array -

Does anyone know a simple way how to do it ? Thanks

Tried ( at the very top - before the class , and also inside the class at the top )

$Global['ScheduleTest'] = array();

global $ScheduleCheck = array();

(inside class ) private $ScheduleCheck = array();

FULL CODE :::::::

<?php

global $ScheduleCheck = array() ;

class CourseRegistrationController extends BaseController {

public function __construct() {
    $this->beforeFilter('csrf', array('on'=>'post'));
}

.....

// Function to test time overlaps

function testTimeOverlap($course ,$regday, $start_time,$end_time)
    {
        $start_time1 = (substr($start_time, 0, 5)) ;
        $end_time1 = (substr($end_time, 0, 5)) ;

        $ScheduleArr = makeSchedule();

        $reg_days = explode(",",$regday);

        foreach ($reg_days as $rday)
        {
            foreach ($ScheduleArr as $schedule)
            {

                if((strtolower($rday))==(strtolower($schedule['day'])))
                {

                    $start_time2 = (substr($schedule['stime'], 0, 5)) ;
                    $end_time2 = (substr($schedule['etime'], 0, 5)) ;

                    if(testTime($start_time1,$end_time1,$start_time2,$end_time2))
                    {
                        array_push($ScheduleCheck, array("course"=>$course,"value"=>"true","day"=>$rday ));
                    }
                  else
                  {
                    array_push($ScheduleCheck, array("course"=>$course,"value"=>"false","day"=>$rday ));
                  }

                }
                else
                {
                    array_push($ScheduleCheck, array("course"=>$course,"value"=>"true","day"=>$rday ));
                }

            }

        }
    }


// Another function to go through the global array

function finalTimeTest()
    {
        testNewTime((strtolower(Input::get('course_id'))),(strtolower(Input::get('lecture_id'))),(strtolower(Input::get('tutorial_id'))),(strtolower(Input::get('lab_id'))));

        foreach($ScheduleCheck as $ckTime)
        {
            if($ckTime['value']=="true")
            {
                return true;
            }
            else
            {
                return ($ckTime['course']." ");
            }
        }
    }

?>
¿Fue útil?

Solución

These "functions" should be defined as methods on a class.

class ScheduleChecker {

    protected $scheduleCheck = array();

    // Your functions should be placed in here!

    public function getScheduleCheck()
    {
        return $this->scheduleCheck;
    }

}

Then you can reference the property from inside your methods.

public function finalTimeTest()
{
    // Using $this to call the testNewTime method.
    $this->testNewTime((strtolower(Input::get('course_id'))),(strtolower(Input::get('lecture_id'))),(strtolower(Input::get('tutorial_id'))),(strtolower(Input::get('lab_id'))));

    // Using $this to get the scheduleCheck property.
    foreach($this->scheduleCheck as $ckTime)
    {
        if($ckTime['value']=="true")
        {
            return true;
        }
        else
        {
            return ($ckTime['course']." ");
        }
    }
}

You'll probably want to bind this to Laravel's container (in app/start/global.php):

App::instance('schedule', new ScheduleChecker);

Then, in your controller, to get the $scheduleCheck property:

$scheduleCheck = App::make('schedule')->getScheduleCheck();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top