Jump to content


Photo

Incluir E Evocar Classes Dinamicamente, Como?


  • Faça o login para participar
9 replies to this topic

#1 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 25/07/2007, 12:27

Tenho algumas classes que são necessárias em praticamente todas as páginas do site. Então preciso incluir e evocar estas classes no arquivo principal (index), mas, existem alguns arquivos onde eu gostaria de fazer isso dinamicamente.

Fiz um array com os arquivos, através de um loop eu faço a verificação se o arquivo existe e depois incluo, porém eu não consigo evocá-los.

Isto seria uma espécie de plugin dentro do sistema, caso, exista a classe o sistema permite exibir outras funções ou o mantenedor poderá criar novas funções, seria baseado em convenções.

Na hora de instânciar a classe seria usado o nome que vir antes de .class.php

Então criei um método na classe que inclui os arquivos, o método deveria instânciar as classes, mas, não funciona...
Fiz assim
function Require_files_evoke()
	{
		/**
		 * 
		 */
		
		/**
		 * Evoking all the class 
		 */
		
		/**
		 * Manipulate permissions of the user
		 */
		$User_permissions = new User_permissions();
		
		
		/**
		 * Manipulate blocks of home page
		 */
		$Principal_blocks = new Principal_blocks();
		
}
Deveria funcionar assim, concorda? Como resolver esta?

Falopa!

#2 georgewar

georgewar

    Let's upgrade myself

  • Usuários
  • 169 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro - RJ
  • Interesses:PHP - JavaScript

Posted 25/07/2007, 18:14

acho que já li isso sobre uma classe estendida

veja extends do manual

#3 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 25/07/2007, 18:17

Não é extender classes é evoca-las ou seja fazer com que ela possa ser usada...

Falopa!

#4 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 25/07/2007, 20:11

Essa função está dentro de outra classe, ou está sozinha ?

Acho que seu problema é com a visibilidade das classes.
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#5 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 26/07/2007, 08:30

Está dentro de outra classe, esta classe tem a seguinte estrutura
class Require
{

function Require_files_evoke()
{

/**
 * Evoco as classes usando este metodo
 * 
 **/
$User_permissions = new User_permissions();

}

function Require_files_include()
{
/**
 * Realiza um loop incluindo as classes existentes
 * 
 **/
}

}

E ai como seria?

Falopa!

#6 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 26/07/2007, 08:43

Veja se é isso: http://br.php.net/ma...p5.autoload.php
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#7 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 26/07/2007, 09:00

Neste caso o __autoload() seria o mesmo que eu já faço nesta classe não é?
/**
	 * Execute method for require unic file name nescessary
	 * @access public
	 * @version 20070710
	 * 
	 */
	public function require_file_of_name()
	{
		
		// The files for require action
		$this->file_name_include = array(
											'Layout.class.php', 
											'Sql_mananger.class.php', 
											'User_Permissions.class.php', 
											'Access.class.php', 
											'Principal_blocks.class.php', 
											'Avisos.class.php'
										);
										
		// Loop for percurse array indices
		for( $interator=0; $interator <= count( $this->file_name_include ); $interator++ ):
			
			// Verifying if interator no is empty
			if( !empty( $this->file_name_include[ $interator ] ) ):
				
				// Requeing file informed
				require_once( '../sistema/classes/'. $this->file_name_include[$interator] );
				
			endif;
			
			
			// Verifying if require function was terminated
			if( $interator == count( $this->file_name_include ) )
			{
				
				// Evoke the method evoke
				$this->Require_files_evoke();
			}
			
		endfor;
		
	}
Inclui-las eu consigo o que não consigo é instancia-las, sempre retorna um erro assim quando tento chamar algum método

Notice: Undefined variable: access in C:\xampp\htdocs\portal\academico\admin.php on line 42
Fatal error: Call to a member function access_verify() on a non-object in C:\xampp\htdocs\portal\academico\admin.php on line 42


Tentei usando o __autoload() e obtive o mesmo erro. Espero que eu tenha feito do jeito certo apenas troquei o nome do método require_file_of_name por __autoload().

Falopa!

#8 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 26/07/2007, 09:50

O loco cara, tá com uns erros de inglês ae forte hein ... rs

Usa o google pra traduzir pra você se não tiver conhecimento, ou documenta em português mesmo. A documentação é importante demais daqui um tempo quando o projeto estiver maior. Nem você mesmo vai lembrar de todas as funções, então é melhor documentar de uma forma que você entenda. É só uma dica, não fique nervoso. <_<

Sobre seu problema, esse if é desnecessário:
if( $interator == count( $this->file_name_include ) )

Acho melhor você comparar no for se a variável $interator (não era pra ser iterator ?!), é menor (e somente menor) que o número de elementos no vetor, e usar o for somente para inclusão dos arquivos.

Ae terminar o for você faz a chamada dessa outra função, que aliás, é o importante pra gente ver esse erro melhor, e você só postou a chamada, e não a função ... rs

Posta essa Require_files_evoke() pra analise. :lol:

Se puder postar também essa linha 42 onde acontece o erro, é interessante.
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#9 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 26/07/2007, 10:10

@ BIMONTE
Esta dizendo que sou leigo em inglês??? Mãããããeeeee

Na realidade eu não entendo muito inglês, mas, é aquele caso o mesmo do PHP é fazendo que agente aprende. Se eu ficar comentando sempre em português eu nunca vou aprender de verdade. Pra não falar que eu escrevi errado eu escrevi usando gírias :P

Voltando ao problema o conteúdo da Require_files_evoke() é o deste post aqui http://forum.wmonlin...&...st&p=862193 :D

Só pra não deixar a página grande demais, coloquei resumidamente...

A linha 42 contém uma chamada a um método assim
$Access->access_verify();
Aparece dois erros por que eu habilitei pra exibir todos os erros reporting ALL (acho que é esse mesmo o nome correto)
==========================
EDITADO

Depois de muito pensar e ler seus dois posts anteriores é que eu fui entender o que o autoload faz heheh, que anta que fui...

Eu li o manual umas cinco vezes e agora que nem estava mais pensando nisso fui prestar atenção em onde está a explicação da função, bem que eles poderiam ter explicado que o nome da instância tem que ser exatamente igual o nome do arquivo num lugar mais destacado e não escondido como isso ai...


Falopa!

Edição feita por: hostdesigner, 26/07/2007, 16:36.


#10 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 29/10/2017, 12:48

Buy Tenormin From Mexico viagra Buy Sinemet Canada Ed Pills At Walmart Best Price 100mg Viagra
buy brand name accutane Amoxicillin Rss Feed Can You Buy Flagyl Over The Counter viagra Zithromax Gynecology
Amoxicillin Insomnia Children Furosemide Mexico levitra expre delivery Propecia Kaina Amoxicillin Causes Hearing Achat Kamagra Grenoble




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq