Ir para o conteúdo
RicardoSantos97

Aceder a classe noutro servidor

Mensagens Recomendadas

RicardoSantos97

Boa tarde,

Gostaria de saber como é que consigo aceder a uma classe que esta noutro servidor através do php.

Ou seja, necessito de instanciar um objecto dessa classe e aceder aos respectivos métodos sendo que na realidade o objecto é instanciado num servidor, porém a classe que tem o construtor desse objecto esta noutro servidor.

Atenciosamente,

Ricardo Santos.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Olá,

uma classe não é mais do que um ficheiro por isso só tens que conseguir aceder a esse ficheiro e incluí-lo (include/require)

É a primeira vez que alguém apresenta ou cenário como o teu mas. Parece-me estranho que precises de fazer isso, mas ok.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RicardoSantos97

Olá,

uma classe não é mais do que um ficheiro por isso só tens que conseguir aceder a esse ficheiro e incluí-lo (include/require)

É a primeira vez que alguém apresenta ou cenário como o teu mas. Parece-me estranho que precises de fazer isso, mas ok.

Boa tarde,

Desde já agradeço a resposta.

O que quero fazer é aceder a um ficheiro de conexão a base de dados com métodos que me retornem informações genéricas como o número de linhas afectadas por um Insert/Update/Delete, ou por exemplo que me devolva os resultados de um Select. A classe já a tenho criada e funcional se os ficheiros estiverem no mesmo servidor. O principal objectivo da classe é reutilizar a mesma para vários projectos de forma a não estar a rescrever código desnecessariamente. Se eventualmente um cliente solicitar a criação de uma aplicação que esteja alojada, após concluída, no seu servidor, o objectivo é ele instanciar um objecto dessa classe que está no meu servidor e utilizar os métodos respectivos.

Relativamente a resposta, com o include/require poderia ser uma solução porém teria de abilitar a função allow_url_include que por si só seria uma quebra na segurança das aplicação.

Alguém tem mais alguma ideia de como é que posso resolver este situação?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

queres usar uma classe que está implementada num projecto que existe num outro servidor ?

solução : copia o ficheiro


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RicardoSantos97

queres usar uma classe que está implementada num projecto que existe num outro servidor ?

solução : copia o ficheiro

Boa tarde,

O que pretendo é instanciar um objecto de uma classe que esta num servidor diferente do qual eu estou a instanciar o objecto. Ou seja, no servidor A tenho o meu ficheiro data.php, por exemplo, e no servidor B tenho o ficheiro index.php.

Se o ficheiro data.php estive-se no mesmo servidor e diretoria do ficheiro index.php seria algo deste genero:

<?php
//Incluir o ficheiro data.php
include('data.php');
//Instanciação do Objecto da classe data
$data = new data();
?>

Ficheiro data.php:

<?php
class data
{
//Metodos
}
?>

Porém o meu ficheiro data.php esta noutro servidor e não no mesmo que o ficheiro index.php. Uma solução poderia ser fazer o include do ficheiro através da url do ficheiro, considerando que o ficheiro data.php esta na raiz do dominio exemplo.pt:

<?php
include('htttp://www.exemplo.pt/data.php');
?>

Para que esta solução resulte é necessario no php.ini ativar a configuração allow_url_include, o que por si só é uma falha de segurança.

A minha questão é se existe alguma maneira de instanciar um objecto de uma classe num servidor externo e fazer uso dos metodos que estão associados a esse objecto?

Desde já obrigado pela ajuda.

Editado por RicardoSantos97

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RicardoSantos97

tens a tua questão, e eu tenho a minha :

qual o problema em copiar o ficheiro ?

Boa tarde,

Não a nenhum problema em copiar o ficheiro. O objectivo com este exemplo que demonstrei no ultimo post era realizar uma espécie de "biblioteca", como se fosse em .net. Ou seja, criava a classe, realizava o build da aplicação e tinha a dll. De seguida bastava fazer o import para os vários projectos que tenho.

Tentei ver como é que poderia fazer em php, porém não encontrei nenhum solução. Como tal pensei neste solução, em que tenho num servidor as "dll´s" e depois para os vários projectos que estariam hospedados fora do meu servidor, realizava um "include" dessas "dll´s" de forma a instanciar os objectos.

Editado por RicardoSantos97

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

antes de mais, quando fazes build da dll, não quer dizer que a dll está online para tu sacares e correr na tua aplicação.

esse exemplo volta a "cair" na situação : cópia o teu ficheiro

o que tu queres é algo que o Java implementa atra´ves daquilo a que se chama de RMI

em PHP estou a magicar aqui uma coisa, deixa testar antes de dizer algo ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RicardoSantos97

antes de mais, quando fazes build da dll, não quer dizer que a dll está online para tu sacares e correr na tua aplicação.

esse exemplo volta a "cair" na situação : cópia o teu ficheiro

o que tu queres é algo que o Java implementa atra´ves daquilo a que se chama de RMI

em PHP estou a magicar aqui uma coisa, deixa testar antes de dizer algo ...

Também tinha visto o RMI, porém não encontrei aplicação pratica para PHP.

A questão de não copiar o ficheiro é de o cliente não ficar com o mesmo no servidor dele, ou seja de o codigo que desenvolvi fique de certa forma protegido.

Desde já obrigado pela ajuda.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

ok ... arranjei uma solução para ti

isto é uma solução básica, o que indica que em termos de processos de segurança, és tu que terás de implementar em cima desta ideia

servidor:

<?php
echo <<<'EOD'
class MyClass {
 static public function add($v1, $v2) {
   return $v1 + $v2;
 }

 pubic function mult($v1, $v2) {
   return $v1 * $v2;
 }
}
EOD;

cliente:

eval( file_get_contents('http://...') );

echo "teste1 : " . MyClass::add(3, 3) . " (resultado esperado : 6)<br />";

$instance = new MyClass();
echo "teste2 : " . MyClass::mult(3, 3) . " (resultado esperado : 9)<br />";


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RicardoSantos97
Em 7/7/2016 às 21:23, HappyHippyHippo disse:

ok ... arranjei uma solução para ti

isto é uma solução básica, o que indica que em termos de processos de segurança, és tu que terás de implementar em cima desta ideia

servidor:


<?php
echo <<<'EOD'
class MyClass {
 static public function add($v1, $v2) {
return $v1 + $v2;
 }

 pubic function mult($v1, $v2) {
return $v1 * $v2;
 }
}
EOD;
 

cliente:


eval( file_get_contents('http://...') );

echo "teste1 : " . MyClass::add(3, 3) . " (resultado esperado : 6)<br />";

$instance = new MyClass();
echo "teste2 : " . MyClass::mult(3, 3) . " (resultado esperado : 9)<br />";
 

Vou adaptar para aquilo que necessito.

Obrigado pela ajuda.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.