Class Constructor
Posted: Fri Oct 09, 2009 12:37 pm
I am trying to use OO Constructors for the first time. Not sure if I am setting and calling it correct. Here are the error lines that I am getting that I believe are due to not predefining the value in the variable.
Notice: Undefined offset: 1 in D:\Documents and Settings\414004425\My Documents\My Websites\PETdb\md4c10.php on line 46
Notice: Undefined offset: 1 in D:\Documents and Settings\414004425\My Documents\My Websites\PETdb\md4c10.php on line 50
Notice: Undefined offset: 1 in D:\Documents and Settings\414004425\My Documents\My Websites\PETdb\md4c10.php on line 120
Can someone please have a look and let me know what is missing?
I attached both the program file and the text file for reference.
Notice: Undefined offset: 1 in D:\Documents and Settings\414004425\My Documents\My Websites\PETdb\md4c10.php on line 46
Notice: Undefined offset: 1 in D:\Documents and Settings\414004425\My Documents\My Websites\PETdb\md4c10.php on line 50
Notice: Undefined offset: 1 in D:\Documents and Settings\414004425\My Documents\My Websites\PETdb\md4c10.php on line 120
Can someone please have a look and let me know what is missing?
I attached both the program file and the text file for reference.
Code: Select all
<?php
// System variables
$skip_first_blank_lines=6;
$file_name = "Text.txt";
//$file_name = "Hamma.txt";
//$file_name = "text2.txt";
// Open file in read mode
$file = @fopen($file_name, "r") or exit("Unable to open file!");
if ($file) {
$sLBL=fgets($file);
$project = project($sLBL); //Isolates project number from first row of text in file
echo "Project: ".$project."<br /><br />";
//Skips through blank lines in file
for ($count=0; $count <=$skip_first_blank_lines; ++$count) {
$sLBL=fgets($file);
}
$new_part_flag = 1; //Indicates whether a new part should be created
$part_cnt = -1; //Counts the number of parts in file
//Loops through the material status lines until end of file
while (!feof($file)) {
$pos=0;
while (substr($sLBL,$pos,1) == '|') { //Determine part level
$pos++;
}
//Collect part number, name and factory
If (substr($sLBL,$pos,2) == '--') {
$material[++$part_cnt] = new Material;
$material[$part_cnt]->constructor();
$material[$part_cnt]->level = $pos;
$pos=$pos+2;
$material[$part_cnt]->part = component($sLBL,$pos);
$pos = $pos + strlen($material[$part_cnt]->part);
while (substr($sLBL,$pos,1) == ' ') {
$pos++;
}
$material[$part_cnt]->factory = substr($sLBL,($pos - strlen($sLBL)),4);
$pos=$pos+7;
$material[$part_cnt]->part_desc = substr($sLBL,($pos - strlen($sLBL)),40);
}
//Collect all remaining details regarding a part
elseif (trim($sLBL,"| -") != "") {
$sfragment = explode(" ",ltrim(substr($sLBL,($pos - strlen($sLBL)))));
if (rank($sfragment[1]) < rank($material[$part_cnt]->status)) {
$material[$part_cnt]->status = $sfragment[1];
}
switch (rank($sfragment[1])) {
case 1: //Plan.order
$material[$part_cnt]->edate = fdate($sfragment[0]);
break;
case 2: //PurRequist
$material[$part_cnt]->edate = fdate($sfragment[0]);
list($material[$part_cnt]->po, $material[$part_cnt]->line) = purchase_order($sfragment[2]);
break;
case 3: //Sim.reqmts
//No action to take
break;
case 4: //POSched.ln
$material[$part_cnt]->error = error_code($sLBL);
$material[$part_cnt]->edate = fdate($sfragment[0]);
list($material[$part_cnt]->po, $material[$part_cnt]->line) = purchase_order($sfragment[2]);
break;
case 5: //Ship.note
$material[$part_cnt]->edate = fdate($sfragment[0]);
list($material[$part_cnt]->po, $material[$part_cnt]->line) = purchase_order($sfragment[2]);
break;
case 6: //Sched.agr.
$material[$part_cnt]->edate = fdate($sfragment[0]);
list($material[$part_cnt]->po, $material[$part_cnt]->line) = purchase_order($sfragment[2]);
break;
case 7: //QM InspLot
//No action to take
break;
case 8: //Prod.order
$material[$part_cnt]->error = error_code($sLBL);
$material[$part_cnt]->prod= production_order($sfragment[0]);
$material[$part_cnt]->edate = fdate($sfragment[0]);
break;
case 9: //Plant Stck
break;
case 10: //Depend.req
$material[$part_cnt]->qty = quantity($sLBL);
$material[$part_cnt]->edate = fdate($sfragment[0]);
break;
case 11: //Order.res.
$material[$part_cnt]->qty = quantity($sLBL);
$material[$part_cnt]->rdate = fdate($sfragment[0]);
break;
case 12: //SubctctReq
$material[$part_cnt]->qty = quantity($sLBL);
$material[$part_cnt]->rdate = fdate($sfragment[0]);
break;
case 13: //SalesOrder
$material[$part_cnt]->qty = quantity($sLBL);
$material[$part_cnt]->rdate = fdate($sfragment[0]);
break;
case 14: //ReleaseOrd
$material[$part_cnt]->qty = quantity($sLBL);
$material[$part_cnt]->rdate = fdate($sfragment[0]);
list($po[$part_cnt], $line) = purchase_order($sfragment[2]);
break;
case 15: //PldOrdRelO
$material[$part_cnt]->prod = production_order($sfragment[0]);
$material[$part_cnt]->qty = quantity($sLBL);
$material[$part_cnt]->rdate = fdate($sfragment[0]);
break;
case 16: //ProjectOrd
//confirm variables
break;
case 17: //Free deliv
//confirm variables
break;
case 18: //SubcStock
//confirm variables
break;
default:
echo "Status missing from list: '".$sfragment[1]."'<br />";
}
}
$sLBL=fgets($file);
}
fclose($file);
echo "<pre>"; var_dump($material); echo "</pre>\n";
}
class Material {
public $level;
public $part;
public $part_desc;
public $status;
public $edate;
public $rdate;
public $qty;
public $pr;
public $po;
public $line;
public $factory;
public $error;
public $prod;
function constructor() {
$level = NULL;
$part = NULL;
$part_desc = NULL;
$status = NULL;
$edate = NULL;
$rdate = NULL;
$qty = NULL;
$pr = NULL;
$po = NULL;
$line = NULL;
$factory = NULL;
$error = NULL;
$prod = NULL;
}
}
function component($string,$pos) { //Isolates part number from string
$assembly = (explode(" ",substr($string,($pos - strlen($string)))));
return $assembly[0];
}
function project($string) { //Isolates project number
return ltrim(stristr(trim($string)," "), "0 ");
}
function production_order($string) { //Isolates produnction order
$prod_order = explode("/",$string);
return $prod_order[0];
}
function error_code($string) { //Isolates error code
return $errord = trim(substr($string,-68,10));
}
function quantity($string) { //Isolates required quantity
$qty = explode("-",trim(substr($string,-50,10)));
return $qty[0];
}
function purchase_request($string) { //Isolates purchase request
return explode("/",$string);
}
function purchase_order($string) { //Isolates purchase order number and line
return explode("/",$string);
}
function fdate($date) { //Isolates date
$date_a = explode("-",$date);
return $date = $date_a[0]."/".$date_a[1]."/".$date_a[2];
}
function rank($status) { //Determines ranking of status
switch ($status) {
case "Plan.order":
$rank=1;
break;
case "PurRequist":
$rank=2;
break;
case "Sim.reqmts":
$rank=3;
break;
case "POSched.ln":
$rank=4;
break;
case "Ship.note":
$rank=5;
break;
case "Sched.agr.":
$rank=6;
break;
case "QM InspLot":
$rank=7;
break;
case "Prod.order":
$rank=8;
break;
case "Plant": //Plant Stck
$rank=9;
break;
case "Depend.req":
$rank=10;
break;
case "Order.res.":
$rank=11;
break;
case "SubctctReq":
$rank=12;
break;
case "SalesOrder":
$rank=13;
break;
case "ReleaseOrd":
$rank=14;
break;
case "PldOrdRelO":
$rank=15;
break;
case "ProjectOrd":
$rank=16;
break;
case "Free deliv":
$rank=17;
break;
case "SubcStock":
$rank=18;
break;
default:
$rank=25;
}
return $rank;
}
?>