2013-11-13 7 views
0

Я только учусь РНР и вышел вопрос, на мой взгляд, я могу определить класс в функции так:определения класса в функции

public class test{ 
    public function newtest(){ 
    // defining a class here like this: 
    public class funclass{ 
    ..... 
    } 
    } 
} 
+0

вы ли попробовать? Вы узнаете, что он делает –

+0

Почему вы хотите это сделать? Класс может быть динамически создан, но он не будет ограничен только этой функцией –

+0

Вопрос не соответствует коду. – sectus

ответ

1

не.

запустить свой код после удаления этих public с и вы будете получать это:

Fatal error: Class declarations may not be nested on line 6

Read 1

Read 2

3

Да, вы можете

function a(){ 
    class A { 
     } 
    } 

var_dump(class_exists('A')); //bool(false) 
a(); 
var_dump(class_exists('A')); //bool(true) 

Но помните, что классы являются глобальными. Вы не можете связать класс только с функциональной областью.

+0

Вы не можете этого сделать. Поместите эту функцию 'a()' в класс так же, как они, а затем повторите попытку. Ответ - четкий разрез * no *. Посмотрите их код. –

+0

@Hanky ​​웃 Panky Ответ ясен: вы не можете привязать класс к области действия только. Поэтому я принимаю этот ответ. –

+0

Вы можете принять этот ответ, это не проблема. Но этот ответ не работает для вашего кода. Все, что вы пытались сделать в своем коде, просто невозможно. В этом решении нет внешнего класса, поэтому он работает. –

Смежные вопросы