TalkPHP
 
 
Account Login
Latest Articles
» The basic usage of PHPTAL, a XML/XHTML template library for PHP
» Vulnerable methods and the areas they are commonly trusted in.
» Simple way to protect a form from bot
» The Basics On: How Session Stealing Works
» How to keep your forms from double posting data
IRC Channel
IRC Speech Bubble Join the friendly bunch on IRC...
(#TalkPHP on Freenode)

...Also available via a web interface.

See this thread for information on the TalkPHP Free Hugs Initiative™. Subject to availability.
Associates
Associates
CSS Tutorials
Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old 01-02-2011, 08:15 PM   #1 (permalink)
The Visitor
 
Kingdom's Avatar
 
Join Date: Jan 2011
Posts: 3
Thanks: 1
Kingdom is on a distinguished road
Bricks Need help with array()

OK, so i have this class:
PHP Code:
<?php
class Lang extends Db {
    var 
$lang = array();
    var 
$chosen_lang;
    var 
$lang_dir;
    var 
$img_dir;
    
    function 
setLang ($chosen_lang) {
        
$this->lang_dir $_SERVER['DOCUMENT_ROOT'].'/lang/'.$this->chosen_lang.'/';
        
$this->img_dir $_SERVER['DOCUMENT_ROOT'].'/gl_imgs/'.$this->chosen_lang.'/';
        
$this->chosen_lang $chosen_lang;
        
        unset(
$chosen_lang);
    }
    
    public function 
loadLang ($file){
        if( 
file_exists$_SERVER['DOCUMENT_ROOT'].'/lang/'.$this->chosen_lang.'/'.$file.'.php' ) ) {
            include( 
$_SERVER['DOCUMENT_ROOT'].'/lang/'.$this->chosen_lang.'/'.$file.'.php' );
            
$this->lang[$file] = array();
                
            foreach (
$lang as $k => $v) {
                
$this->lang[$file][$k] = $v;
            }
        }
        
        unset(
$lang$file$k$v);
    }
}
?>
And on the index page of the website i have this:
PHP Code:
<?php
include($_SERVER['DOCUMENT_ROOT'].'classes/class_Db.php');
include(
$_SERVER['DOCUMENT_ROOT'].'classes/class_Lang.php');

$lang = new Lang;
$lang->setLang('en-us');
$lang->loadLang('website_account');
$lang->loadLang('website_main-menu');
?>
My question is: why the script won't work if i add the command:
PHP Code:
$lang->loadLang('website_main-menu'); 
If i only leave the following, the script works as intended:
PHP Code:
$lang = new Lang
$lang->setLang('en-us'); 
$lang->loadLang('website_account'); 
After some debugging, i found out that the script executes the first loadLang command on the 'website_account', but when it executes the second loadLang command ('website_main-menu'), it freezes at this line on the class:
PHP Code:
$this->lang[$file] = array(); 
Thanks in advance!
Kingdom is offline  
Reply With Quote
Old 01-03-2011, 12:53 AM   #2 (permalink)
The Addict
 
tony's Avatar
 
Join Date: Aug 2008
Posts: 336
Thanks: 8
tony is on a distinguished road
Default

I am guessing is a mixture of document_root and unsetting the $chosen_lang. There is ambiguity in which one you are unsetting since the class's property is named the same and can be access the same. document_root sometimes doesn't work right, that has been my experience, instead I use dirname(__FILE__) for that.
And using var to set class properties is deprecated, you can use public, private, or protected. you can leave it just like that e.g. $lang=array(); and it will default to public.

I am guessing the problem is that it can't include the right file or maybe that file has something that is causing the freezing in this line include( $_SERVER['DOCUMENT_ROOT'].'/lang/'.$this->chosen_lang.'/'.$file.'.php' );
tony is offline  
Reply With Quote
The Following User Says Thank You to tony For This Useful Post:
Kingdom (01-03-2011)
Old 01-03-2011, 02:00 AM   #3 (permalink)
The Visitor
 
Kingdom's Avatar
 
Join Date: Jan 2011
Posts: 3
Thanks: 1
Kingdom is on a distinguished road
Default

Oh, yes yes... i found the bug. Thanks a lot, :P.

The problem was that the included file was like this:
PHP Code:
<?php
$lang 
= array(
    
'home' => 'Home'
    'contact' 
=> 'Contact'
    'aboutus' 
=> 'About Us'
    'games' 
=> 'Games'
    'movies' 
=> 'Movies'
    'tv' 
=> 'TV'
    'music' 
=> 'Music'
);
?>
The problem was that i forgot to separate the indexes with the comma, that was why one file was working (had commas) and the other wasn't (no commas). It should look like this:
PHP Code:
<?php
$lang 
= array(
    
'home' => 'Home',
    
'contact' => 'Contact',
    
'aboutus' => 'About Us',
    
'games' => 'Games',
    
'movies' => 'Movies',
    
'tv' => 'TV',
    
'music' => 'Music'
);
?>
Thanks, :D!

BTW, i'll take a look at those problems you mentioned...
Kingdom is offline  
Reply With Quote
Old 01-03-2011, 03:04 AM   #4 (permalink)
The Addict
 
tony's Avatar
 
Join Date: Aug 2008
Posts: 336
Thanks: 8
tony is on a distinguished road
Default

Great that you find the problem, good thing it wasn't the constructing the lang path. I didn't mean to look like big problems, it is just a have a pet peeve with ambiguities in codes
tony is offline  
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
feedback on my class please frostyboy33 Advanced PHP Programming 7 10-22-2012 09:12 AM
PHP Group Array "teams" and add up points godsdead General 3 07-15-2009 08:38 PM
How to search array benton General 3 03-29-2009 12:31 AM
Array mess Killswitch Absolute Beginners 4 12-14-2008 07:35 AM
Part 1: Getting Started with Array Functions Wildhoney Absolute Beginners 6 10-01-2007 10:53 AM


All times are GMT. The time now is 11:34 PM.

 
     

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0
Inactive Reminders By Icora Web Design