Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
Complex classes like Schedule often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use Schedule, and based on these observations, apply Extract Interface, too.
| 1 | <?php |
||
| 9 | class Schedule { |
||
| 10 | protected $cookies = array(); |
||
| 11 | public $db; |
||
| 12 | function __construct($dbc = null) { |
||
| 16 | |||
| 17 | /** |
||
| 18 | * Add schedule data to database |
||
| 19 | * @param String $ident aircraft ident |
||
| 20 | * @param String $departure_airport_icao departure airport icao |
||
| 21 | * @param String $departure_airport_time departure airport time |
||
| 22 | * @param String $arrival_airport_icao arrival airport icao |
||
| 23 | * @param String $arrival_airport_time arrival airport time |
||
| 24 | / @param String $source source of data |
||
| 25 | */ |
||
| 26 | |||
| 27 | public function addSchedule($ident,$departure_airport_icao,$departure_airport_time,$arrival_airport_icao,$arrival_airport_time,$source = 'website') { |
||
| 28 | date_default_timezone_set('UTC'); |
||
| 29 | $date = date("Y-m-d H:i:s",time()); |
||
| 30 | //if ($departure_airport_time == '' && $arrival_airport_time == '') exit; |
||
| 31 | //$query = "SELECT COUNT(*) FROM schedule WHERE ident = :ident"; |
||
| 32 | $query = "SELECT COUNT(*) FROM routes WHERE CallSign = :ident"; |
||
| 33 | $query_values = array(':ident' => $ident); |
||
| 34 | try { |
||
| 35 | $sth = $this->db->prepare($query); |
||
|
1 ignored issue
–
show
|
|||
| 36 | $sth->execute($query_values); |
||
| 37 | } catch(PDOException $e) { |
||
| 38 | return "error : ".$e->getMessage(); |
||
| 39 | } |
||
| 40 | if ($sth->fetchColumn() > 0) { |
||
| 41 | if ($departure_airport_time == '' && $arrival_airport_time == '') { |
||
| 42 | $query = "SELECT COUNT(*) FROM routes WHERE CallSign = :ident AND FromAirport_ICAO = :departure_airport_icao AND ToAirport_ICAO = :arrival_airport_icao"; |
||
| 43 | $query_values = array(':ident' => $ident,':departure_airport_icao' => $departure_airport_icao,':arrival_airport_icao' => $arrival_airport_icao); |
||
| 44 | } elseif ($arrival_airport_time == '') { |
||
| 45 | $query = "SELECT COUNT(*) FROM routes WHERE CallSign = :ident AND FromAirport_ICAO = :departure_airport_icao AND FromAirport_Time = :departure_airport_time AND ToAirport_ICAO = :arrival_airport_icao"; |
||
| 46 | $query_values = array(':ident' => $ident,':departure_airport_icao' => $departure_airport_icao,':departure_airport_time' => $departure_airport_time,':arrival_airport_icao' => $arrival_airport_icao); |
||
| 47 | } elseif ($departure_airport_time == '') { |
||
| 48 | $query = "SELECT COUNT(*) FROM routes WHERE CallSign = :ident AND FromAirport_ICAO = :departure_airport_icao AND ToAirport_ICAO = :arrival_airport_icao AND ToAirport_Time = :arrival_airport_time"; |
||
| 49 | $query_values = array(':ident' => $ident,':departure_airport_icao' => $departure_airport_icao,':arrival_airport_icao' => $arrival_airport_icao,':arrival_airport_time' => $arrival_airport_time); |
||
| 50 | } else { |
||
| 51 | //$query = "SELECT COUNT(*) FROM schedule WHERE ident = :ident AND departure_airport_icao = :departure_airport_icao AND departure_airport_time = :departure_airport_time AND arrival_airport_icao = :arrival_airport_icao AND arrival_airport_time = :arrival_airport_time"; |
||
| 52 | $query = "SELECT COUNT(*) FROM routes WHERE CallSign = :ident AND FromAirport_ICAO = :departure_airport_icao AND FromAirport_Time = :departure_airport_time AND ToAirport_ICAO = :arrival_airport_icao AND ToAirport_Time = :arrival_airport_time"; |
||
| 53 | $query_values = array(':ident' => $ident,':departure_airport_icao' => $departure_airport_icao,':departure_airport_time' => $departure_airport_time,':arrival_airport_icao' => $arrival_airport_icao,':arrival_airport_time' => $arrival_airport_time); |
||
| 54 | } |
||
| 55 | try { |
||
| 56 | $sth = $this->db->prepare($query); |
||
|
1 ignored issue
–
show
|
|||
| 57 | $sth->execute($query_values); |
||
| 58 | } catch(PDOException $e) { |
||
| 59 | return "error : ".$e->getMessage(); |
||
| 60 | } |
||
| 61 | if ($sth->fetchColumn() == 0) { |
||
| 62 | //$query = 'UPDATE schedule SET departure_airport_icao = :departure_airport_icao, departure_airport_time = :departure_airport_time, arrival_airport_icao = :arrival_airport_icao, arrival_airport_time = :arrival_airport_time, date_modified = :date, source = :source WHERE ident = :ident'; |
||
| 63 | if ($departure_airport_time == '' && $arrival_airport_time == '') { |
||
| 64 | $query = 'UPDATE routes SET FromAirport_ICAO = :departure_airport_icao, ToAirport_ICAO = :arrival_airport_icao, date_modified = :date, Source = :source WHERE CallSign = :ident'; |
||
| 65 | $query_values = array(':ident' => $ident,':departure_airport_icao' => $departure_airport_icao,':arrival_airport_icao' => $arrival_airport_icao, ':date' => $date, ':source' => $source); |
||
| 66 | View Code Duplication | } elseif ($arrival_airport_time == '') { |
|
|
1 ignored issue
–
show
|
|||
| 67 | $query = 'UPDATE routes SET FromAirport_ICAO = :departure_airport_icao, FromAiport_Time = :departure_airport_time, ToAirport_ICAO = :arrival_airport_icao, date_modified = :date, Source = :source WHERE CallSign = :ident'; |
||
| 68 | $query_values = array(':ident' => $ident,':departure_airport_icao' => $departure_airport_icao,':departure_airport_time' => $departure_airport_time,':arrival_airport_icao' => $arrival_airport_icao, ':date' => $date, ':source' => $source); |
||
| 69 | } elseif ($departure_airport_time == '') { |
||
| 70 | $query = 'UPDATE routes SET FromAirport_ICAO = :departure_airport_icao, ToAirport_ICAO = :arrival_airport_icao, ToAirport_Time = :arrival_airport_time, date_modified = :date, Source = :source WHERE CallSign = :ident'; |
||
| 71 | $query_values = array(':ident' => $ident,':departure_airport_icao' => $departure_airport_icao,':arrival_airport_icao' => $arrival_airport_icao,':arrival_airport_time' => $arrival_airport_time, ':date' => $date, ':source' => $source); |
||
| 72 | View Code Duplication | } else { |
|
|
1 ignored issue
–
show
|
|||
| 73 | $query = 'UPDATE routes SET FromAirport_ICAO = :departure_airport_icao, FromAiport_Time = :departure_airport_time, ToAirport_ICAO = :arrival_airport_icao, ToAirport_Time = :arrival_airport_time, date_modified = :date, Source = :source WHERE CallSign = :ident'; |
||
| 74 | $query_values = array(':ident' => $ident,':departure_airport_icao' => $departure_airport_icao,':departure_airport_time' => $departure_airport_time,':arrival_airport_icao' => $arrival_airport_icao,':arrival_airport_time' => $arrival_airport_time, ':date' => $date, ':source' => $source); |
||
| 75 | } |
||
| 76 | try { |
||
| 77 | $sth = $this->db->prepare($query); |
||
|
1 ignored issue
–
show
|
|||
| 78 | $sth->execute($query_values); |
||
| 79 | } catch(PDOException $e) { |
||
| 80 | return "error : ".$e->getMessage(); |
||
| 81 | } |
||
| 82 | } else { |
||
| 83 | //$query = 'UPDATE schedule SET date_lastseen = :date WHERE ident = :ident'; |
||
| 84 | $query = 'UPDATE routes SET date_lastseen = :date WHERE CallSign = :ident'; |
||
| 85 | $query_values = array(':ident' => $ident,':date' => $date); |
||
| 86 | try { |
||
| 87 | $sth = $this->db->prepare($query); |
||
|
1 ignored issue
–
show
|
|||
| 88 | $sth->execute($query_values); |
||
| 89 | } catch(PDOException $e) { |
||
| 90 | return "error : ".$e->getMessage(); |
||
| 91 | } |
||
| 92 | } |
||
| 93 | } else { |
||
| 94 | $query = 'INSERT INTO routes (CallSign,FromAirport_ICAO, FromAirport_Time, ToAirport_ICAO, ToAirport_Time,date_added,source) VALUES (:ident,:departure_airport_icao,:departure_airport_time,:arrival_airport_icao,:arrival_airport_time,:date,:source)'; |
||
| 95 | $query_values = array(':ident' => $ident,':departure_airport_icao' => $departure_airport_icao,':departure_airport_time' => $departure_airport_time,':arrival_airport_icao' => $arrival_airport_icao,':arrival_airport_time' => $arrival_airport_time, ':date' => $date, ':source' => $source); |
||
| 96 | try { |
||
| 97 | $sth = $this->db->prepare($query); |
||
|
1 ignored issue
–
show
|
|||
| 98 | $sth->execute($query_values); |
||
| 99 | } catch(PDOException $e) { |
||
| 100 | return "error : ".$e->getMessage(); |
||
| 101 | } |
||
| 102 | } |
||
| 103 | |||
| 104 | } |
||
| 105 | |||
| 106 | public function getSchedule($ident) { |
||
| 107 | $Translation = new Translation($this->db); |
||
| 108 | $operator = $Translation->checkTranslation($ident,false); |
||
| 109 | if ($ident != $operator) { |
||
| 110 | $query = "SELECT FromAirport_ICAO as departure_airport_icao, ToAirport_ICAO as arrival_airport_icao, FromAirport_Time as departure_airport_time, ToAirport_Time as arrival_airport_time FROM routes WHERE CallSign = :operator OR CallSign = :ident LIMIT 1"; |
||
| 111 | $query_values = array(':ident' => $ident,'operator' => $operator); |
||
| 112 | } else { |
||
| 113 | $query = "SELECT FromAirport_ICAO as departure_airport_icao, ToAirport_ICAO as arrival_airport_icao, FromAirport_Time as departure_airport_time, ToAirport_Time as arrival_airport_time FROM routes WHERE CallSign = :ident LIMIT 1"; |
||
| 114 | $query_values = array(':ident' => $ident); |
||
| 115 | } |
||
| 116 | try { |
||
| 117 | $sth = $this->db->prepare($query); |
||
|
1 ignored issue
–
show
|
|||
| 118 | $sth->execute($query_values); |
||
| 119 | } catch(PDOException $e) { |
||
| 120 | return "error : ".$e->getMessage(); |
||
| 121 | } |
||
| 122 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
| 123 | if (count($row) > 0) { |
||
| 124 | return $row; |
||
| 125 | } else return array(); |
||
| 126 | } |
||
| 127 | |||
| 128 | View Code Duplication | public function checkSchedule($ident) { |
|
| 129 | global $globalDBdriver; |
||
| 130 | //$query = "SELECT COUNT(*) as nb FROM schedule WHERE ident = :ident AND date_added > DATE_SUB(CURDATE(), INTERVAL 8 DAY) - 8 LIMIT 1"; |
||
| 131 | if ($globalDBdriver == 'mysql') { |
||
| 132 | $query = "SELECT COUNT(*) as nb FROM routes WHERE CallSign = :ident AND ((date_added BETWEEN DATE(DATE_SUB(CURDATE(), INTERVAL 15 DAY)) AND DATE(NOW()) and date_modified IS NULL) OR (date_modified BETWEEN DATE(DATE_SUB(CURDATE(), INTERVAL 15 DAY)) AND DATE(NOW()))) LIMIT 1"; |
||
| 133 | } else { |
||
| 134 | $query = "SELECT COUNT(*) as nb FROM routes WHERE CallSign = :ident |
||
| 135 | AND ((date_added::timestamp BETWEEN CURRENT_TIMESTAMP - INTERVAL '15 DAYS' AND CURRENT_TIMESTAMP) and date_modified::timestamp IS NULL) |
||
| 136 | OR (date_modified::timestamp BETWEEN CURRENT_TIMESTAMP - INTERVAL '15 DAYS' AND CURRENT_TIMESTAMP) LIMIT 1"; |
||
| 137 | } |
||
| 138 | $query_values = array(':ident' => $ident); |
||
| 139 | try { |
||
| 140 | $sth = $this->db->prepare($query); |
||
|
1 ignored issue
–
show
|
|||
| 141 | $sth->execute($query_values); |
||
| 142 | } catch(PDOException $e) { |
||
| 143 | return "error : ".$e->getMessage(); |
||
| 144 | } |
||
| 145 | $row = $sth->fetch(PDO::FETCH_ASSOC); |
||
| 146 | return $row['nb']; |
||
| 147 | } |
||
| 148 | |||
| 149 | /** |
||
| 150 | * Get flight info from Air France |
||
| 151 | * @param String $callsign The callsign |
||
| 152 | * @param String $date date we want flight number info |
||
| 153 | * @param String $carrier IATA code |
||
| 154 | * @return Flight departure and arrival airports and time |
||
| 155 | */ |
||
| 156 | private function getAirFrance($callsign, $date = 'NOW',$carrier = 'AF') { |
||
| 189 | |||
| 190 | /** |
||
| 191 | * Get flight info from EasyJet |
||
| 192 | * @param String $callsign The callsign |
||
| 193 | * @param String $date date we want flight number info |
||
| 194 | * @return Flight departure and arrival airports and time |
||
| 195 | */ |
||
| 196 | private function getEasyJet($callsign, $date = 'NOW') { |
||
| 217 | |||
| 218 | /** |
||
| 219 | * Get flight info from Ryanair |
||
| 220 | * @param String $callsign The callsign |
||
| 221 | * @return Flight departure and arrival airports and time |
||
| 222 | */ |
||
| 223 | private function getRyanair($callsign) { |
||
| 243 | |||
| 244 | /** |
||
| 245 | * Get flight info from Swiss |
||
| 246 | * @param String $callsign The callsign |
||
| 247 | * @return Flight departure and arrival airports and time |
||
| 248 | */ |
||
| 249 | private function getSwiss($callsign) { |
||
| 273 | |||
| 274 | /** |
||
| 275 | * Get flight info from British Airways API |
||
| 276 | * @param String $callsign The callsign |
||
| 277 | * @param String $date date we want flight number info |
||
| 278 | * @return Flight departure and arrival airports and time |
||
| 279 | */ |
||
| 280 | public function getBritishAirways($callsign, $date = 'NOW') { |
||
| 301 | |||
| 302 | /** |
||
| 303 | * Get flight info from Lutfhansa API |
||
| 304 | * @param String $callsign The callsign |
||
| 305 | * @param String $date date we want flight number info |
||
| 306 | * @return Flight departure and arrival airports and time |
||
| 307 | */ |
||
| 308 | public function getLufthansa($callsign, $date = 'NOW') { |
||
| 335 | |||
| 336 | /** |
||
| 337 | * Get flight info from Transavia API |
||
| 338 | * @param String $callsign The callsign |
||
| 339 | * @param String $date date we want flight number info |
||
| 340 | * @return Flight departure and arrival airports and time |
||
| 341 | */ |
||
| 342 | public function getTransavia($callsign, $date = 'NOW') { |
||
| 365 | |||
| 366 | /** |
||
| 367 | * Get flight info from Tunisair |
||
| 368 | * @param String $callsign The callsign |
||
| 369 | * @return Flight departure and arrival airports and time |
||
| 370 | */ |
||
| 371 | public function getTunisair($callsign) { |
||
| 385 | |||
| 386 | /** |
||
| 387 | * Get flight info from Vueling |
||
| 388 | * @param String $callsign The callsign |
||
| 389 | * @return Flight departure and arrival airports and time |
||
| 390 | */ |
||
| 391 | public function getVueling($callsign,$date = 'NOW') { |
||
| 410 | |||
| 411 | /** |
||
| 412 | * Get flight info from Iberia |
||
| 413 | * @param String $callsign The callsign |
||
| 414 | * @param String $date date we want flight number info |
||
| 415 | * @return Flight departure and arrival airports and time |
||
| 416 | */ |
||
| 417 | public function getIberia($callsign, $date = 'NOW') { |
||
| 444 | |||
| 445 | /** |
||
| 446 | * Get flight info from Star Alliance |
||
| 447 | * @param String $callsign The callsign |
||
| 448 | * @param String $date date we want flight number info |
||
| 449 | * @return Flight departure and arrival airports and time |
||
| 450 | */ |
||
| 451 | private function getStarAlliance($callsign, $date = 'NOW',$carrier = '') { |
||
| 478 | |||
| 479 | /** |
||
| 480 | * Get flight info from Alitalia |
||
| 481 | * @param String $callsign The callsign |
||
| 482 | * @param String $date date we want flight number info |
||
| 483 | * @return Flight departure and arrival airports and time |
||
| 484 | */ |
||
| 485 | private function getAlitalia($callsign, $date = 'NOW') { |
||
| 501 | |||
| 502 | /** |
||
| 503 | * Get flight info from Brussels airlines |
||
| 504 | * @param String $callsign The callsign |
||
| 505 | * @param String $date date we want flight number info |
||
| 506 | * @return Flight departure and arrival airports and time |
||
| 507 | */ |
||
| 508 | private function getBrussels($callsign, $date = 'NOW') { |
||
| 528 | |||
| 529 | /** |
||
| 530 | * Get flight info from FlightRadar24 |
||
| 531 | * @param String $callsign The callsign |
||
| 532 | * @param String $date date we want flight number info |
||
| 533 | * @return Flight departure and arrival airports and time |
||
| 534 | */ |
||
| 535 | /* |
||
| 536 | public function getFlightRadar24($callsign, $date = 'NOW') { |
||
| 537 | $Common = new Common(); |
||
| 538 | $url= "http://arn.data.fr24.com/zones/fcgi/feed.js?flight=".$callsign; |
||
| 539 | $data = $Common->getData($url); |
||
| 540 | if ($data != '') { |
||
| 541 | $parsed_json = get_object_vars(json_decode($data)); |
||
| 542 | if (count($parsed_json) > 2) { |
||
| 543 | $info = array_splice($parsed_json,2,1); |
||
| 544 | $fr24id = current(array_keys($info)); |
||
| 545 | $urldata = "http://krk.data.fr24.com/_external/planedata_json.1.4.php?f=".$fr24id; |
||
| 546 | $datapl = $Common->getData($urldata); |
||
| 547 | if ($datapl != '') { |
||
| 548 | $parsed_jsonpl = json_decode($datapl); |
||
| 549 | if (isset($parsed_jsonpl->from_iata)) { |
||
| 550 | $DepartureAirportIata = $parsed_jsonpl->from_iata; |
||
| 551 | $ArrivalAirportIata = $parsed_jsonpl->to_iata; |
||
| 552 | $departureTime = date('H:i',$parsed_jsonpl->dep_schd); |
||
| 553 | $arrivalTime = date('H:i',$parsed_jsonpl->arr_schd); |
||
| 554 | return array('DepartureAirportIATA' => $DepartureAirportIata,'DepartureTime' => $departureTime,'ArrivalAirportIATA' => $ArrivalAirportIata,'ArrivalTime' => $arrivalTime,'Source' => 'website_flightradar24'); |
||
| 555 | } |
||
| 556 | } |
||
| 557 | } |
||
| 558 | } |
||
| 559 | return array(); |
||
| 560 | } |
||
| 561 | */ |
||
| 562 | /** |
||
| 563 | * Get flight info from Lufthansa |
||
| 564 | * @param String $callsign The callsign |
||
| 565 | * @param String $date date we want flight number info |
||
| 566 | * @return Flight departure and arrival airports and time |
||
| 567 | */ |
||
| 568 | |||
| 569 | /* private function getLufthansa($callsign, $date = 'NOW') { |
||
| 570 | $Common = new Common(); |
||
| 571 | */ |
||
| 572 | //$numvol = preg_replace('/^[A-Z]*/','',$callsign); |
||
| 573 | /* |
||
| 574 | $url= "http://www.lufthansa.com/fr/fr/Arrivees-Departs-fonction"; |
||
| 575 | $check_date = new Datetime($date); |
||
| 576 | if (!filter_var($numvol,FILTER_VALIDATE_INT)) return array(); |
||
| 577 | |||
| 578 | $post = array('flightNumber' => $numvol, 'date' => $check_date->format('Y-m-d'),'time' => '12:00','timezoneOffset' => '0','selection' => '0','arrivalDeparture' => 'D'); |
||
| 579 | $data = $Common->getData($url,'post',$post); |
||
| 580 | if ($data != '') { |
||
| 581 | $table = $Common->table2array($data); |
||
| 582 | $departureTime = trim(str_replace($check_date->format('d.m.Y'),'',$table[25][3])); |
||
| 583 | } |
||
| 584 | |||
| 585 | $post = array('flightNumber' => $numvol, 'date' => $check_date->format('Y-m-d'),'time' => '12:00','timezoneOffset' => '0','selection' => '0','arrivalDeparture' => 'A'); |
||
| 586 | $data = $Common->getData($url,'post',$post); |
||
| 587 | if ($data != '') { |
||
| 588 | $table = $Common->table2array($data); |
||
| 589 | $arrivalTime = trim(str_replace($check_date->format('d.m.Y'),'',$table[25][3])); |
||
| 590 | } |
||
| 591 | return array('DepartureAirportIATA' => '','DepartureTime' => $departureTime,'ArrivalAirportIATA' => '','ArrivalTime' => $arrivalTime,'Source' => 'website_lufthansa'); |
||
| 592 | } |
||
| 593 | */ |
||
| 594 | /** |
||
| 595 | * Get flight info from flytap |
||
| 596 | * @param String $callsign The callsign |
||
| 597 | * @param String $date date we want flight number info |
||
| 598 | * @return Flight departure and arrival airports and time |
||
| 599 | */ |
||
| 600 | private function getFlyTap($callsign, $date = 'NOW') { |
||
| 620 | |||
| 621 | /** |
||
| 622 | * Get flight info from flightmapper |
||
| 623 | * @param String $callsign The callsign |
||
| 624 | * @param String $date date we want flight number info |
||
| 625 | * @return Flight departure and arrival airports and time |
||
| 626 | */ |
||
| 627 | public function getFlightMapper($callsign, $date = 'NOW') { |
||
| 658 | |||
| 659 | /** |
||
| 660 | * Get flight info from flightaware |
||
| 661 | * @param String $callsign The callsign |
||
| 662 | * @param String $date date we want flight number info |
||
| 663 | * @return Flight departure and arrival airports and time |
||
| 664 | */ |
||
| 665 | public function getFlightAware($callsign, $date = 'NOW') { |
||
| 693 | |||
| 694 | /** |
||
| 695 | * Get flight info from CostToTravel |
||
| 696 | * @param String $callsign The callsign |
||
| 697 | * @param String $date date we want flight number info |
||
| 698 | * @return Flight departure and arrival airports and time |
||
| 699 | */ |
||
| 700 | public function getCostToTravel($callsign, $date = 'NOW') { |
||
| 719 | |||
| 720 | /** |
||
| 721 | * Get flight info from Air Canada |
||
| 722 | * @param String $callsign The callsign |
||
| 723 | * @param String $date date we want flight number info |
||
| 724 | * @return Flight departure and arrival airports and time |
||
| 725 | */ |
||
| 726 | private function getAirCanada($callsign,$date = 'NOW') { |
||
| 747 | |||
| 748 | /** |
||
| 749 | * Get flight info from Vietnam Airlines |
||
| 750 | * @param String $callsign The callsign |
||
| 751 | * @param String $date date we want flight number info |
||
| 752 | * @return Flight departure and arrival airports and time |
||
| 753 | */ |
||
| 754 | private function getVietnamAirlines($callsign, $date = 'NOW') { |
||
| 773 | |||
| 774 | /** |
||
| 775 | * Get flight info from Air Berlin |
||
| 776 | * @param String $callsign The callsign |
||
| 777 | * @param String $date date we want flight number info |
||
| 778 | * @param String $carrier IATA code |
||
| 779 | * @return Flight departure and arrival airports and time |
||
| 780 | */ |
||
| 781 | private function getAirBerlin($callsign, $date = 'NOW', $carrier = 'AB') { |
||
| 835 | |||
| 836 | |||
| 837 | |||
| 838 | public function fetchSchedule($ident,$date = 'NOW') { |
||
| 1100 | } |
||
| 1101 | |||
| 1112 | ?> |
||
|
1 ignored issue
–
show
|
Adding explicit visibility (
private,protected, orpublic) is generally recommend to communicate to other developers how, and from where this method is intended to be used.