PHP: Problemen met class functie

Status
Niet open voor verdere reacties.

DeRijckeBjorn

Gebruiker
Lid geworden
20 jan 2012
Berichten
23
Hallo iedereen !

Ik ben een soort programma aan het schrijven in php
en ik stuit even op een probleempje dat waarschijnlijk makkelijk
te verhelpen is, maar ik zie toch helaas niet wat er fout gaat. :confused:

het programma wordt gestart door op start.bat te klikken
deze file zie er zo uit:
Code:
@echo off

title *


set INSTPHP=D:\xampp\php


PATH=%PATH%;%INSTPHP%;%INSTPHP%\extensions
"%INSTPHP%\php.exe" cii.php

pause


Als ik op start.bat klik verschijnt er echter enkel:
druk op een toets om door te gaan... , en dan sluit
dit scherm af.

Ik heb op verschillende plaatsen echo 'test'; geplaatst
en ben erop uitgekomen dat er na class Cicon {
niets meer gebeurt. Als er echter een voor
class Cicon wordt geplaatst, komt de echo mooi
op het scherm, en onmiddelijk daarna: druk op een toets...

Nu denk ik dat php gewoon alles overslaat vanaf deze class
want ook
Code:
echo "loading settings config file", nl;
wordt niet meer weergegeven.

Nu is mijn vraag: wat is er fout ?

PHP:
<?php

define ("nl", "\r\n");
define ("CIversion", "0.1"); //don't change
	
// required files

	require_once("inc/GbxRemote.inc.php");

//*****
// CI
//*****
	
class Cicon {
	
	// variables
		
	var $setting;
	
	
	//Load settings from xml
		
	function loadsetting () {
		
		echo "loading settings config file", nl;
			
		$settings = array();
		
		if(file_exists('config1.xml')) {
			
			$xml = @simplexml_load_file('config1.xml');
				
		} // if
			
		else {
			
			echo 'ERROR: Can\'t read the Config file! Check location/name';
			exit;
				
		} // else
			
		$setting['db_loc'] = $xml->CI_CONFIG->db_settings->db_loc;
		$setting['db_name'] = $xml->CI_CONFIG->db_settings->db_name;
		$setting['db_username'] = $xml->CI_CONFIG->db_settings->db_username;
		$setting['db_password'] = $xml->CI_CONFIG->db_settings->db_password;
		$setting['serverip'] = $xml->CI_CONFIG->server_settings->serverip;
		$setting['serverport'] = $xml->CI_CONFIG->server_settings->serverport;
		$setting['serverlogin'] = $xml->CI_CONFIG->server_settings->serverlogin;
		$setting['serverpassword'] = $xml->CI_CONFIG->server_settings->serverpassword;
		$setting['nation'] = $xml->CI_CONFIG->server_settings->nation;
		$setting['location'] = $xml->CI_CONFIG->server_settings->location;
				
		
	} // function loadsetting
	
	
} //class Cicon
?>

Alvast bedankt !

Groetjes, Bjorn
 
Er is niks fout. De code tussen class Cicon { en de laatste } is enkel de klassedefinitie. De code die hierin staat wordt niet uitgevoerd. Probeer eens om na de klassedefinitie dit te zetten:
PHP:
$testcicon = new Cicon();
$testcicon->loadsetting();
Dan zou de echo in de methode "loadsetting" wel in beeld moeten komen.
 
Bedankt !
de class wordt nu uitgevoerd. :d

Nu is er helaas een ander probleem...

PHP:
			$setting['db_loc'] = $xml->CI_CONFIG->db_settings->db_loc;
			$setting['db_name'] = $xml->CI_CONFIG->db_settings->db_name;
			$setting['db_username'] = $xml->CI_CONFIG->db_settings->db_username;
			$setting['db_password'] = $xml->CI_CONFIG->db_settings->db_password;
			$setting['serverip'] = $xml->CI_CONFIG->server_settings->serverip;
			$setting['serverport'] = $xml->CI_CONFIG->server_settings->serverport;
			$setting['serverlogin'] = $xml->CI_CONFIG->server_settings->serverlogin;
			$setting['serverpassword'] = $xml->CI_CONFIG->server_settings->serverpassword;
			$setting['nation'] = $xml->CI_CONFIG->server_settings->nation;
			$setting['location'] = $xml->CI_CONFIG->server_settings->location;

Ik krijg nu deze error: trying to get property of non-object in Y:\...\cii.php on line x
(in de code hierboven zou x dan 1 tot 10 zijn)

Heb ik op de foute manier geprobeerd om de config1.xml file te lezen ?
 
Laatst bewerkt:
Die foutmelding wil zeggen dat $xml, $xml->CI_CONFIG, $xml->CI_CONFIG->db_settings of $xml->CI_CONFIG->server_settings geen object is.

$xml is een object (al moet je eigenlijk nog controleren of het "false" is als het bestand niet gelezen kan worden). Waar komt CI_CONFIG vandaan?
 
[XML]
<?xml version="1.0" encoding="utf-8" ?>


<!-- everything must be filled in correctly, or CI won't start -->

<CI_CONFIG>

<db_settings>

<!-- Database Configuration -->

<db_loc></db_loc> <!-- Location of the database, e.g. localhost -->
<db_name></db_name> <!-- Name of your database, e.g. -->
<db_username></db_username> <!-- Username, e.g. root -->
<db_password></db_password> <!-- Password, e.g. mypassword -->

</db_settings>


<server_settings>

<!-- Dedicated Server Configuration -->

<serverip></serverip> <!-- IP adress of the machine running the Dedicated server, e.g. 127.0.0.1 -->
<serverport></serverport> <!-- Port, e.g. 5008 -->
<serverlogin></serverlogin> <!-- The login of your server account, e.g. myproserver -->
<serverpassword></serverpassword> <!-- The password of your server account, e.g. 123abc -->
<nation></nation> <!-- Nation of your server, e.g. Belgium -->
<location></location> <!-- location: http://php.net/manual/en/timezones.php, e.g. Europe/Brussels -->

</server_settings>


<message_settings>

<!-- Server Messages Configuration -->

<connect_message_enable></connect_message_enable> <!-- TRUE / FALSE -->
<leave_message_enable></leave_message_enable> <!-- TRUE / FALSE -->

<connect_message>$f00->>$0d0{player_name} $fffConnected! Ladder: $0d0{player_ladder}$fff, Rank: $0d0{player_server_rank}</connect_message>
<leave_message>$f00->>$0d0{player_name} $fff Left!</leave_message>

<new_rec_message>$f00->>$0d0{player_name} $fff Drove the $0d0{rec_nummer} $fffRecord! Can you do better?</new_rec_message>
<current_rec_message>$f00->>$fffThe current record on $0d0{track_name} $fffis driven by $0d0{player_name}$fff! ($0d0{rec_time}$fff)</current_rec_message>
<no_rec_message>$f00->>$fffNo records on this track! ($0d0{track_name}$fff)</no_rec_message>
<error_rec_message></error_rec_message>

</message_settings>

</CI_CONFIG>
[/XML]

CI_CONFIG is een index in mijn config1.xml file

Misschien werkt
PHP:
$xml = @simplexml_load_file('config1.xml');

Niet als je zoveel onderverdelingen hebt in je xml file?
Ik wou namelijk een zeer duidelijke en leesbare xml file opstellen.
 
Laatst bewerkt:
Ik ben niet bekend met PHP i.c.m. XML, maar als ik de help-pagina over SimpleXML lees moet je het buitenste element weglaten (zie de voorbeelden op die pagina).

In jouw geval moet je
PHP:
$setting['db_loc'] = $xml->CI_CONFIG->db_settings->db_loc;
dan vervangen door
PHP:
$setting['db_loc'] = $xml->db_settings->db_loc;

Maar nogmaals, ik ben hier niet bekend mee. Dit baseer ik alleen op die help-pagina.
 
Heel erg bedankt!

Inderdaad, nu worden de settings correct geladen :D

Heel erg bedankt dat je je verdiept in iets dat je niet kent,
gewoon om mijn vraag te beantwoorden

Groetjes,
Bjorn
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan