Trong CF10, tôi muốn truy cập một đối tượng Test biến bằng cách sử dụng hàm onMissingMethod trong đối tượng TestHelper, nhưng tôi gặp lỗi.Sử dụng onMissingMethod không thể truy cập các biến đối tượng
Test.cfc
component {
public Any function init(){
instance = { x = 1 };
return this;
}
public numeric function getX(){
return instance.x;
}
}
TestHelper.cfc
component {
public Any function init(){
variables.testObj = new Test();
return this;
}
public any function onMissingMethod(required string missingMethodName, required struct missingMethodArguments){
var func = variables.testObj[ arguments.missingMethodName ];
return func(argumentCollection = arguments.missingMethodArguments);
}
}
Gọi đối tượng
obj = new TestHelper();
writeOutput(obj.getX()); //Element INSTANCE.X is undefined in VARIABLES
Trong CF10, điều này mang lại cho tôi một lỗi mà yếu tố X là undefined trong ví dụ. Nó dường như không nhận ra thể hiện biến. Tôi có thể xác định rõ ràng chức năng getX trong TestHelper, nhưng tôi đã hy vọng tôi có thể sử dụng chức năng onMissingMethod.
Tôi có hiểu lầm về cách onMissingMethod hoạt động ở đây không? FWIW, mã hoạt động ở Railo.
Adam, bạn nói đúng (như thường lệ). Khi tôi thử nghiệm nó trong Railo, tôi đã thực sự làm 'return variables.testObj [arguments.missingMethodName] (argumentCollection = arguments.missingMethodArguments);'. Nhưng CF10 không thích mã này, vì vậy tôi nghĩ rằng tôi chỉ có thể gán phương thức cho một biến func và sau đó gọi nó trên dòng tiếp theo. Tôi đã không nhận ra rằng làm như vậy sẽ đưa phương pháp ra khỏi bối cảnh của nó. Cảm ơn bạn đã làm rõ. Nhiều đánh giá cao. – user2943775
Không có probs. Vâng, chúng tôi đã cố gắng để Adobe thêm cú pháp đó, nhưng họ sẽ không. Có 'invoke()' mặc dù, có thể giúp gì? https://wikidocs.adobe.com/wiki/display/coldfusionen/Invoke –