Error First Style
function demo() {
/****************
/* Code Chunk 1 *
/****************
if(validation_successful) {
/****************
/* Code Chunk 2 *
/****************
if($result = another_method()) {
/****************
/* Code Chunk 3 *
/****************
return $something;
} else {
// log error
// generate error message
}
} else {
// log error
// generate error message
}
return FALSE;
}function demo() {
/****************
/* Code Chunk 1 *
/****************
/****************
/* Code Chunk 2 *
/****************
if(!validation_successful) {
// log error
// generate error message
return FALSE;
}
if(!($result = another_method())) {
// log error
// generate error message
return FALSE;
}
/****************
/* Code Chunk 3 *
/****************
return $something;
}function demo() {
/****************
/* Code Chunk 1 *
/****************
if(!validation_successful) {
// log error
// generate error message
return FALSE;
}
/****************
/* Code Chunk 2 *
/****************
if(!($result = another_method())) {
// log error
// generate error message
return FALSE;
}
/****************
/* Code Chunk 3 *
/****************
return $something;
}Examples
Generation_lib.php::update_user_reading()
function update_user_reading_modified($meter_id, $reading_id, $period, $reading, $date) {
/*** Part 1. Initialization ***/
$cut_off_timestamp = mktime(0, 0, 0, Date("n"), $this->cut_off, Date("Y"));
$start_timestamp = mktime(0, 0, 0, Date("n"), 1, Date("Y"));
$reading_date = strtotime($date);
$today = strtotime('now');
$generation = strtotime($period);
$meters = $this->ci->meters->getByID($meter_id);
$meter = $meters[0];
// $location = $this->ci->location->getById($meter['locations_id']);
$data['meter_readings_id'] = $reading_id;
$data['reading_type'] = $meter['meter_reading_style'];
$data['reading_source'] = "user";
$data['user_reading'] = $reading;
// Only for cumulative meters
if($meter['meter_reading_style'] == 'cumulative') {
$data['user_reading_taken'] = Date("Y-m-d", $reading_date);
}
// $data['verified_reading'] = 0;
$data['production'] = 0;
$data['carryover'] = 0;
$data['cumulative'] = 0;
$data['srecs'] = 0;
$data['remainder'] = 0;
$data['verified'] = 0;
$data['verified_by_user_id'] = 0;
$data['verified_date'] = '0000-00-00 00:00:00';
$data['verified_reading'] = NULL;
$data['date_read'] = Date("Y-m-d", $generation);
$data['user_id'] = $this->ci->tank_auth->get_user_id();
$data['admin_note'] = NULL;
// $data['date_created'] = Date("Y-m-d H:i:s");
$data['date_changed'] = Date("Y-m-d H:i:s");
/*** Part 2. Failures ***/
// if(($cut_off_timestamp >= $reading_date) && ($reading_date <= $today) && ($reading_date >= $start_timestamp)) {
if( !($meter['meter_reading_style'] == 'actual' && ($cut_off_timestamp >= time())) &&
!($meter['meter_reading_style'] == 'cumulative' && ($cut_off_timestamp >= $reading_date) && ($reading_date <= $today) && ($reading_date >= $start_timestamp))) {
log_message('debug', 'Generation_lib update_user_reading() ERROR');
if($reading_date > $today) {
$this->error = array('reading_date' => "The reading date cannot be a future date");
} else {
$this->error = array('reading_date' => "The reading date must be between the 1st-" . $this->cut_off . ordinal_suffix($this->cut_off) . " of the current month");
}
return FALSE;
}
if(!$this->ci->generation->update($data, $reading_id)) {
log_message('debug', 'Generation_lib update_user_reading() ERROR inserting new data');
$this->error = array('required_reading' => "There was a problem recording your meter reading. Please try again or contact customer service.");
return FALSE;
}
/*** Part 3. Success ***/
$this->copy_meter_readings_to_change_log($reading_id);
if(!is_null($verified = $this->sync_with_gats($reading_id))) {
// return $verified;
}
// log_message('debug', 'Generation_lib update_user_reading() has been run');
return TRUE;
}Fat Controller Method
function controller_method() {
/***************
/* Code Block 1
/***************
if($this->input->post('do_this')) {
// do this
} elseif($this->input->post('do_that')) {
// do that
} elseif(...) {
} ...
...
...
/***************
/* Code Block 2
/***************
}Conditional Statements 1
function lib_method($var1, $var2, $var3) {
model_method_1($var1, $var2, $var3);
/****************
/* Code Chunk 1 *
/****************
}
// In a model class
function model_method_2($var3, $var4, $var5) {...}
function lib_method($var1, $var2, $var3, $var4, $var5) {
if(...) {
model_method_1($var1, $var2, $var3);
} else {
model_method_2($var3, $var4, $var5);
}
/****************
/* Code Chunk 1 *
/****************
}
function lib_method_2($var3, $var4, $var5) {
model_method_2($var3, $var4, $var5);
private_method();
}
private function private_method() {
/****************
/* Code Chunk 1 *
/****************
}
Conditional Statements 2
function lib_method(...) {
/****************
/* Code Chunk 1 *
/****************
if(...) {
foo(...);
} else {
foo(...);
}
/****************
/* Code Chunk 2 *
/****************
if(...) {
...
} else {
...
}
/****************
/* Code Chunk 3 *
/****************
}
SRECTrade Coding Recommendations 9/26/2019
By David Zheng
SRECTrade Coding Recommendations 9/26/2019
- 21