내 수업은 다른 수업과 독립적입니다. 내 클래스 내부의 함수는 다른 클래스의 함수와 동일하지만 세련된 작업을 수행하고 있습니다. parent:: function_in_another_class()
을 사용하고 내 기능을 상위 기능의 작업 흐름에 참여시킬 수 있습니까?클래스를 확장하지 않고 다른 클래스의 함수 하위를 만들 수 있습니까?
답변
번호
PHP에서 당신은 단지 없음 또는 하나 개의 클래스에서 확장 할 수 있습니다. 두 클래스가 서로 독립적이기 때문에 하나 또는 다른 클래스를 찾을 수있는 정보가 없습니다.
은 그러나 당신이 찾고있는 것은 아마 이것이다 :
class A
{
function myFunction() {}
}
class B
{
private $a;
public function __construct(A $a)
{
$this->a = $a;
}
public function myFunction()
{
$this->a->myFunction();
}
}
현재의 클래스가 다른 클래스의 자식, 그래, 당신이 할 수있는 경우. 부모 클래스에 대한 parent
참조 php.net에서
:
<?php
class A {
function example() {
echo "I am A::example() and provide basic functionality.<br />\n";
}
}
class B extends A {
function example() {
echo "I am B::example() and provide additional functionality.<br />\n";
parent::example();
}
}
$b = new B;
// This will call B::example(), which will in turn call A::example().
$b->example();
?>
당신이 할 수있는 최선은, 클래스 A에서
Class B extends Class A
를 클래스 B를 확장하는 것입니다하지만 당신은 할 수 있습니다
class ClassA {
function do_something($args) {
// Do something
}
}
class ClassB {
function do_something_inclassA($args) {
classA::do_something($args);
}
}
중요 : classa :: do_something() 호출; 오류가 :: 예를 ClassA (정적이 함수를 호출, 기능 do_something()가이 정적 기능 do_something() 또한
하지 않기 때문에 정적 통지 경고를 얻을 것이다 E_STRICT를보고 다른 단어의 정적 호출입니다 do_something())은 클래스 a의 함수가 그 안에 $ this를 참조 할 수 없다는 것을 의미합니다.
마이너스 투표를 설명해 주실 수 있으십니까? –
무언가가 효과가있는 것만으로도 그것이 수행되거나 권장되어야한다는 것을 의미하지는 않습니다. 그러므로 경고. – vascowhite
"할 수있는 최선"= 격려, "그러나 또한 할 수 있습니다"= 순수 교육, 감사 Shiplu – Prof83
클래스 메소드가 이미 동일한 작업을 수행하는 이유는 무엇입니까?
할 수 없습니다. 동일한 작업 흐름을 가장 잘 수행하려면 다른 클래스를 인스턴스화하고 동일한 방법을 호출하십시오. 그게 왜 우리가 OOP를 사용하는지.
의 예를 참조하십시오,
interface Fable()
{
public function f();
}
class OtherClass implements Fable
{
public function f()
{
// job flow
}
}
class MyClass
{
private $fable;
public function __construct(Fable $f)
{
$this->fable = $f;
}
public function method1($args){
return $this->fable->f($args);
}
}
왜 투표가 제외됩니까? –
누군가가 연속으로 모든 대답을 왜곡했는지, 왜 그런지, 의견을 남기지 않았다. 그러나, 귀하의 대답은'MyClass :: f()'내부에서 새로운 연산자를 사용하고 있습니다. 그러면이 연산자가 다시 밀접하게 결합됩니다. MyClass가 생성 될 때 주입하는 것보다 훨씬 쉽습니다. 나중에 인터페이스를 사용할 수 있습니다. 'new'와 함께 작동하지 않습니다. - 비교 : http://stackoverflow.com/a/8769264/367456 – hakre
@hakre 질문자가 동일한 작업 흐름을 원했기 때문에 나는 단단히 결합 시켰습니다. 메서드를 포함하는 매개 변수로 * 인터페이스 *를 사용하는 것이 더 좋습니다. 업데이트 됨. –
- 1. 확장하지 않고 Sphere 클래스의 지오메트리에 액세스 할 수 있습니까?
- 2. 클래스를 확장하지 않고 동적 다형성을 달성하는 방법
- 3. 런타임에 다른 클래스의 클래스를 상속받을 수 있습니까?
- 4. C++ 클래스의 Objective-C++ 하위 클래스를 만들 수 있습니까?
- 5. UIApplicationDelegate 다른 클래스의 함수
- 6. 다른 클래스의 함수 호출
- 7. 어떻게 클래스를 가지지 않고 DLL을 만들 수 있습니까?
- 8. 활동을 확장하지 않고 roboguice 사용
- 9. 구성으로 제어 가능한 다른 클래스를 만들 수 있습니까?
- 10. 다른 클래스의 함수 사용
- 11. 다른 클래스의 함수 호출
- 12. 런타임시 부분 클래스를 어떻게 만들 수 있습니까?
- 13. 어떻게 NSInputStream의 하위 클래스를 만들 수 있습니까?
- 14. 클래스의 인스턴스를 만들 수 없습니다
- 15. 다른 클래스의 속성에 해당 클래스를 할당하지 않고 액세스 하시겠습니까?
- 16. 오우거 : BaseApplication을 확장하지 않고 클래스를 사용하여 엔티티를 이동하는 방법
- 17. 다른 클래스의 함수 호출
- 18. 원래 클래스를 수정하지 않고 가상 함수 추가
- 19. xml 파일에서 클래스를 만들 수 있습니까?
- 20. 하나의 함수 포인터가 여러 클래스를 가리킬 수 있습니까? member 함수
- 21. FragmentActivity를 확장하지 않고 SupportFragmentManager 받기
- 22. 클래스의 모든 서브 클래스를 가져올 수 있습니까?
- 23. 파이썬에서는 어떤 클래스의 기능을 복제하지만 기본 클래스를 변경하는 클래스를 만들 수 있습니까?
- 24. ExpandableListActivity를 확장하지 않고 ExpandableListView 사용
- 25. IntelliJ가 자동으로 데코레이터 클래스를 만들 수 있습니까?
- 26. 어떻게 신발에서 하위 클래스를 만들 수 있습니까?
- 27. JavaDoc에서 Java 클래스를 만들 수 있습니까?
- 28. Flash에서 상수를 포함하는 클래스를 만들 수 있습니까?
- 29. VB.NET에서 공통 데이터베이스 클래스를 만들 수 있습니까?
- 30. 외부 클래스의 생성자에서 내부 클래스의 객체를 만들 수 있습니까?
감사합니다! 이것은 충분히 명확하다. – Jenny
좋은 하나, 아주 분명합니다. – Edward