Почему я не могу разделить класс на несколько файлов

Я пытаюсь создать класс TestClass который разделен на несколько файлов. Я разделил его на 3 файла, где первый файл TestClassPart1.php имеет начало класса class TestClass { и последний файл TestClassPart3.php имеет закрывающую скобку класса. Это 3 файла

 //TestClassPart1.php <?php class TestClass { public function func1(){ echo "func 1"; } //TestClassPart2.php <?php public function func2(){ echo "func 2"; } //TestClassPart3.php <?php public function func3(){ echo "func 3"; } } 

Затем я рекомбинирую в фактическом файле класса TestClass.php поэтому TestClass.php – это всего лишь клей всех трех файлов.

 <?php require 'TestClassPart1.php'; require 'TestClassPart2.php'; require 'TestClassPart3.php'; 

Я думал, что это должно работать, но когда я пытаюсь создать экземпляр TestClass и вызывать одну из функций, я получаю parse error, expecting T_FUNCTION' in C:\wamp\www\TestClassPart1.php on line 5 . Строка 5 – } функции func1()

 <?php require 'TestClass.php'; $nc = new TestClass(); $nc->func1(); 

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

Related of "Почему я не могу разделить класс на несколько файлов"

Когда вам require файл, PHP будет анализировать и оценивать содержимое.

Вы являетесь неполным, поэтому, когда PHP анализирует

 class TestClass { public function func1(){ echo "func 1"; } 

он не может понять класс, потому что закрытие} отсутствует.

Просто как тот.


И предвидеть свой следующий вопрос. Эта

 class Foo { include 'methods.php' } 

тоже не будет работать.


Из руководства PHP по ООП 4 (не удалось найти его в 5)

Вы не можете разбить определение класса на несколько файлов. Вы также НЕ можете разбить определение класса на несколько блоков PHP, если разрыв не находится в объявлении метода. Следующие действия не будут работать:

 <?php class test { ?> <?php function test() { print 'OK'; } } ?> 

Однако допускается следующее:

 <?php class test { function test() { ?> <?php print 'OK'; } } ?> 

Если вы ищете горизонтальное повторное использование, либо дождитесь появления PHP.next, который будет включать в себя черты или взглянуть на

  • Можно ли включить код в класс PHP?

Некоторое время назад у меня была такая же мысль, как чисто академический интерес. Невозможно делать то, что вы просите, хотя вы можете использовать PHP для создания PHP, который затем оценивается сервером.

Короче:

Не беспокойтесь

Краткая история:

  • он добавляет уровень незащищенности в вашу систему классификации, поскольку становится труднее контролировать доступ к файлам.
  • это замедляет компиляцию / кеширование страниц
  • вам действительно не нужно заставлять квадратный штифт в круглое отверстие.

Вместо этого: используйте надлежащие методы ООП для разделения функциональности на классы и расширения существующих классов.

Если вы должны сделать это таким образом, вы можете использовать include_once() чтобы напрямую вставить файл в свой скрипт.