konto usunięte

Temat: Strona napisana w php. Wyświetla się: Warning. Pomoc w...

Witam.
Mam stronę na zasadzie frameworka wiele plików.php połączonych ze sobą oraz baza danych.
Projekt składa się tylko ze strony głównej oraz podstrony przeznaczonej wyłącznie dla administratora.

Pragnę swój projekt mieć w XAMPP 1.8.0, który posiada php 5.4.4.
Jednak wraz z nowszą wersją php napotykam następujące problemy.

-Na stronie głównej wyświetlają mi się 2 błędy.
-Na stronie logowania do panelu administracyjnego mam te same 2 błędy oraz 2 dodatkowe.:

______________________________________________________________
Plik controller_base.php wyświetlał 2 Warningi.
Więc w tym pliku controller_base.php są błędy w linii: 13 i 17.

-Warning: Creating default object from empty value in C:\xampp\htdocs\Sklep_jubilerski\core\classes\controller_base.php on line 13
-Warning: Creating default object from empty value in C:\xampp\htdocs\Sklep_jubilerski\core\classes\controller_base.php on line 17

Oto kod pliku controller_base.php:
<?php
Abstract Class Controller_Base {
protected $registry;
function __construct($registry, $models, $addons, $layout, $controller) {
$this->registry = $registry;
$this->session = $registry->session;
$this->error = $registry->error;
$this->text = $registry->text;
$this->router = $registry->router;
$this->template = $registry->template;
$this->db = $registry->db;
foreach($models as $model){
$this->model->$model = $registry->model->$model; //linia 13
}
if($addons)
foreach($addons as $addon){
$this->addon->$addon = $registry->addon->$addon; //linia17
}
$this->template->layout = $layout;
$this->here = $controller;
}
abstract function index($args=null,$post=null);
function addon($addon){
return 'http://'.server_addr.site_addr.'core/addons/'.$addon;
}
}
?>

Proszę o pomoc w poprawie tego pliku. Porady, sugestie czy rozwiązanie problemu mile widziane - piszcie na jakikolwiek pomysł wpadniecie.

_____________________________________________________
Natomiast plik router.php wyświetlał 2 Warningi w linii: 118 i 131.
-Warning: Creating default object from empty value in C:\xampp\htdocs\Sklep_jubilerski\core\classes\router.php on line 118
-Warning: Creating default object from empty value in C:\xampp\htdocs\Sklep_jubilerski\core\classes\router.php on line 131

Oto kod pliku router.php:
<?php

Class Router {
private $registry;
private $path;
private $args = array();

function __construct($registry) {
$this->registry = $registry;
}


function setPath($path) {
$path .= DIRSEP;

if (is_dir($path) == false) {

throw new Exception ('Invalid controller path: `' . $path . '`');
}

$this->path = $path;

}


private function getController(&$file, &$controller, &$action, &$args) {
$route = (empty($_GET['route'])) ? '' : $_GET['route'];
if (empty($route)) { $route = 'home'; }

// Get separate parts
$route = trim($route, '/\\');
$parts = explode('/', $route);
// Find right controller
$cmd_path = $this->path;
foreach ($parts as $part) {
$fullpath = $cmd_path . $part;

// Is there a dir with this path?
if (is_dir($fullpath)) {
$cmd_path .= $part . DIRSEP;
array_shift($parts);
continue;
}

// Find the file
if (is_file($fullpath . iext)) {
$controller = $part;
array_shift($parts);
break;
}
}

if (empty($controller)) { $controller = 'home'; };

// Get action
$action = array_shift($parts);
if (empty($action)) { $action = 'index'; }

$file = $cmd_path . $controller . iext;
$args = $parts;
}



function delegate() {
// Analyze route

$this->getController($file, $controller, $action, $args);
// File available?
$controller_name=$controller;
if (is_readable($file) == false) {
die ('404 - Controller File Not Found');
}

// Include the file
include ($file);
// Initiate the class
$class = 'Controller_' . $controller;


/// LANGUAGE
if($controller=="admin")
$name='pl';
else
$name=$_SESSION['language'];
end; //linia 88

if($name=="") $name="eng";

$mfile=site_path . 'views' . DIRSEP . 'texts' . DIRSEP . $name . iext;

if (is_readable($mfile) == false) {
die ('404 - Texts File Not Found: '.$mfile);
}

include($mfile);
$text_name='Text_'.$name;

$text = new $text_name($this->registry);
$this->registry->text = $text;

////////////

if($addons)
foreach($addons as $addon){ //linia 107
$mfile=core_path . 'addons' . DIRSEP .$addon . iext;

if (is_readable($mfile) == false) {
die ('404 - Addon File Not Found');
}

include($mfile);
$addon_name='Addon_' . $addon;

$addon2 = new $addon_name($this->registry);
$this->registry->addon->$addon = $addon2; //linia 118
}

foreach($models as $name){
$mfile=site_path . 'models' . DIRSEP . $name . iext;
if (is_readable($mfile) == false) {
die ('404 - Model File Not Found');
}

include($mfile);
$model_name='Model_' . $name;

$model = new $model_name($this->registry);
$this->registry->model->$name = $model; //linia 131
}


$controller = new $class($this->registry, $models, $addons, $layout, $controller); //linia 135


// Action available?
if (is_callable(array($controller, $action)) == false) {

$this->redirect('home/deadend/'.$controller_name.'/'.$action);
die ('404 - Controller Action Not Found');
}

// Run action
if(is_callable(array($controller, 'BeforeFilter')) == true)
$controller->BeforeFilter($action,$controller_name,$args,$_POST);

$controller->$action($args,$_POST);
}

function redirect($route){
header("Location: ".site_addr.$route);
}
}
?>Adam Dolcan edytował(a) ten post dnia 09.08.12 o godzinie 20:16

konto usunięte

Temat: Strona napisana w php. Wyświetla się: Warning. Pomoc w...

Ten błąd pojawia się w trybie STRICT, jeśli próbujesz użyć członka klasy, która nie została
jeszcze zainicjalizowana. Więc zanim spróbujesz:

$exampleObject->firstMember = "don't set me yet";

Musisz zainicjalizować klasę:

$exampleObject = new stdClass();
$exampleObject->firstMember = "now you can set me";

Wtedy błędu nie będzie, bo php wie, że ma do czynienia z obiektem.

konto usunięte

Temat: Strona napisana w php. Wyświetla się: Warning. Pomoc w...

Dzięki za wytłumaczenie.
Zwróć uwagę, że zmieniłem treść w 1szym poście ponieważ dodałem pełne raportowanie błędów i trzeba na nowo przejrzeć ten plik.
Ja to rozumiem w swojej głowie o co masz na myśli. Jednak nie potrafię tego przełożyć w swój projekt - czyli samodzielnie poprawić błędy ponieważ naukę php zacząłem parę tygodni temu.
Proszę o pomoc.

___________________________________________________
ps. jak dodałem pełne raportowanie błędów to doszły mi z 12 zawiadomień i większość poprawiłem.
__________________
Zajmijmy się poprawą błędów (Warning), ponieważ tylko one mi zostały. Proszę bardzo o pomoc. Jestem początkujący.Adam Dolcan edytował(a) ten post dnia 10.08.12 o godzinie 12:23

Następna dyskusja:

Zmiany w kodziePHP wraz z n...




Wyślij zaproszenie do