2013-03-21 2 views
1

У меня есть файл с классом и некоторыми свойствами и методами внутри класса.свойство доступа и метод класса в другом php-файле

Мне нужно получить доступ к свойствам и методам этого класса из другого php-файла. Я хотел включить файл с классом, но это не является правильным способом для этой ситуации, потому что этот файл содержит некоторое эхо, которое генерирует html, и если я включу этот файл, он будет генерировать эти html в файле orher, который я не хочу хочу, я хочу только получить доступ к свойствам и методам старого.

+0

Вы можете разместить код? –

+0

Переместите функции в третий файл, а затем включите их в оба. –

+0

Почему вы не разделяете класс на свой собственный файл? –

ответ

0

Итак, у вашего класса есть конструктор. Удалите конструктор класса и включите файл класса на свою страницу. Создайте объект и вызовите свойства или методы, которые вам нужны.

$object->property; 
$object->method(); 
+0

Почему необходимо удалить конструктор? почему вы решили, что проблема была в конструкторе? –

+0

Это не проблема. Он говорит, что объект генерирует html. Поэтому я думал, что он создает объект. Он также мог бы, конечно, использовать 'Object :: method()' – u54r

+0

, он сказал, что «файл содержит эхо, которое генерирует html», а не объект, генерирующий html. Звучит скорее как в файле с определением класса, также имеет 'echo ' blah"; 'вне класса. –

1

Как уже было сказано, лучше определить классы в своем собственном файле только с этим классом и включить это.

someClass.php

<?php 
class SomeClass{ 
    public __Construct(){ 
     echo "This is some class"; 
    } 
} 

на других страницах, вы просто включите и экземпляр класса.

<?php 
include('someClass.php'); 
//do something 

Однако, если по каким-то причинам вы не можете изменить страницу с классом, вы можете использовать буферизацию вывода для включения страницы без выхода.

<?php 
//start a buffer 
ob_start(); 
//include the page with class and html output. 
include("PageWithClassAndHTMLOutput.php"); 
//end the buffer and discard any output 
ob_end_clean(); 

$cls = new ClassFromIncludedPage(); 
$cls->someMethod(); 

Это не идеально, как вы будете устанавливать/перезапись переменных, определенные в включаемой странице, разбирая всю страницу и делать какую-либо обработку, что она делает. Я использовал этот метод (не для классов, но для той же идеи), чтобы делать такие вещи, как захват включенной страницы и отправку ее по электронной почте, когда она уже была написана для отображения на экране.

0

Я приведу пример из веб-приложения недвижимости. Если, например, вы хотите, чтобы получить имя свойства в другом классе, чем свойства класса (класс контракта, который хочет получить имя свойства по недвижимости ид) - на основе Laravel рамок 5,3 PHP

<?php namespace App\Http\Controllers\Operations; 
## THIS CONTROLLER - that wants to access content from another (adjacent) controller 

use App\Http\Controllers\Operations\PropertiesController; 

     Class ContractsController extends Controller{ 
      public function GetContractDetails() # a local method calling a method accessing other method from another class 
      { 
       $property_id = 13; 
       $data['property_name'] = (new PropertiesController)->GetPropertyName($property_id); 
       return response()->json($data, 200); 
      } 
     } 


<?php namespace App\Http\Controllers\Operations; 
# OTHER CONTROLLER - that is accessed by a controller in need 

Class PropertiesController extends Controller { 
    Class PropertiesController extends Controller{ 
     public function GetPropertyName($property_id) #method called by an adjacent class 
     { 
      return $property_name = 'D2/101/ROOM - 201'; 
     } 
    } 
} 
Смежные вопросы