Reputation: 925
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']." ");
}
}
}
?>
Upvotes: 0
Views: 1226
Reputation: 18665
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();
Upvotes: 1