Jump to content
exter

Resolver falha do require?!

Recommended Posts

exter

Boa noite, gostaria de saber se conseguem resolver a minha dúvida.

A minha estrutura de pastas é a seguinte

Code:

/
    Class/
        controllers/
            -userController.php
            -etc...
        model/
            -client.class.php
            -etc...
        -Registry.class.php 
    css/
    pages/
        -teste.php
    -index.php

A minha class Registry guarda todos os objectos que vou precisar na execução da aplicação.

Tenho este trecho de código no meu index.php

Code:

// chama o registry

    require_once('Class/Registry.class.php');
    $registry = Registry::singleton();

Tenho disponiveis todos os objectos que necessito ao logo da execução da aplicação e entre todos os ficheiros mesmo estando em directorias diferentes. O problema agora é o seguinte.

Estes objectos estão disponíveis porque o index é a raiz da aplicação e chama as outras páginas, mas quando tento abrir a pagina teste.php que necessita dos objectos que estão em registry, atraves de uma iframe, o objecto registry não existe.

Tenho este trecho de código no inicio do teste.php

Code:

if(!is_object($registry)){
    define( "APP_PATH", dirname( __FILE__ ) ."/" );
    require_once APP_PATH.'Class/Registry.class.php';
    echo APP_PATH;
    $registry = registry::singleton();
    $registry->storeCoreObjects();

    function __autoload( $class_name ){
            require_once('../Class/controllers/' . $class_name . '.class.php' );
    }
} 

Já tentei de várias maneiras mas devolve-me sempre o erro de que não consegue fazer o require Registry.class.php .

Tanto pelo root da aplicação com endereço absoluto, como fazendo só "../Class/Registry.class.php" ( o teste.php esta numa directoria a cima ),  nunca consigo fazer o require.

Alguma ideia de como resolver isto ?! Ou sugestão de como manter o objecto registry criado no index, no ficheiro teste.php quando aberto pela iframe?

( Se estiver no index.php e fizer include 'teste.php'; o objecto mantém-se como é obvio )

Share this post


Link to post
Share on other sites
brunoais

Só para tirar dúvidas... Quais são as várias mensagens de erro que aparecem?(para as várias tentativas q fizeste)


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
exter

Warning: require_once(/Class/Registry.class.php) [function.require-once]: failed to open stream: No such file or directory in /Users/Miguel/Sites/mkoframework/pages/teste.php on line 5

Fatal error: require_once() [function.require]: Failed opening required '/Class/Registry.class.php' (include_path='.:/Applications/XAMPP/xamppfiles/lib/php:/Applications/XAMPP/xamppfiles/lib/php/pear') in /Users/Miguel/Sites/mkoframework/pages/teste.php on line 5

// utilizando endereços absolutos

Warning: require_once(/Applications/XAMPP/xamppfiles/htdocs/Class/Registry.class.php) [function.require-once]: failed to open stream: No such file or directory in /Users/Miguel/Sites/mkoframework/pages/teste.php on line 5

São estas as mensagens de erro que aparecem

Share this post


Link to post
Share on other sites
brunoais

'/Class/Registry.class.php'

A barra antes de Class indica para procurar no root a diretoria Class. Acredito q o que queres é:

'Class/Registry.class.php' = './Class/Registry.class.php'

ou

'../Class/Registry.class.php'

No 2do... Não entendo o q é que ele está a fazer, na realidade...


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Olá exter....

O problema é o seguinte... O ficheiro teste.php está dentro da pasta pages... ele ao fazer dirname(__FILE__) vai dar-te a directoria completa, com o pages no fim ...

No entanto, podes alterar este trecho:

define( "APP_PATH", dirname( __FILE__ ) ."/" );

Para:

define( "APP_PATH", $_SERVER['DOCUMENT_ROOT'] );

Assim o teu código já deverá funcionar. Mas confirma-me isso... se não der, poderemos tentar outra coisa :)

Share this post


Link to post
Share on other sites
bLACKLOTUS90

Exter, tou quase com o mesmo problema que o teu:

Tou a usar iframes e queria no Index definir uma var só para depois o utilizador não abrir os outros scripts directamente mas não consegui :)

Exemplo index.php

define("INIT_FROM_INDEX","1");

Exemplo de outro script que é chamado atraves de Iframe:

if(!defined("INIT_FROM_INDEX")) die("Tentativa de executar o script directamente");

Se conseguisse isto, também não precisaria de chamar a lib toda em cada script, como tenho.


# Catholic programmingif(!defined('GOD')) die();

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.